Este ejemplo tiene como objetivo firmar un documento PDF mediante el servicio de firma de TrustedX. Para la comprensión de este ejemplo se recomienda haber entendido previamente el ejemplo Generación de una firma CMS/PKCS#7.

Para poder probar este ejemplo se debe descargar el archivo sampleAxis12.zip y seguir las instrucciones que se encuentran en Configuración del entorno.

Al igual que en el ejemplo de Generación de una firma CMS/PKCS#7 para realizar una petición de firma se debe utilizar un objeto SignRequest, pero en este caso el perfil de la firma será PDF.

SignRequest sr = new SignRequest();
sr.setProfile(new URI(PROF_SIGN_PDF));

En este ejemplo se debe realizar la firma de un archivo PDF, demo-file.pdf. En la petición los datos se incluiran codificados en Base64 usando el metodo setBase64Data() del objeto Document.

InputDocuments idoc = new InputDocuments();
Document doc = new Document();
Base64Data b64data = new Base64Data();
b64data.set_value(Util.readBinaryFile(path_in + signname));
b64data.setMimeType("application/pdf");
doc.setBase64Data(b64data);
idoc.setDocument(doc);
sr.setInputDocuments(idoc);

En el caso específico de las firmas PDF, se pueden indicar una serie de propiedades características que deberá tener la firma, en este ejemplo se definen unos atributos como el método de validación de la firma utilizado por AdobeReader (validationMethod), el lugar de emplazamiento de la apariencia de la firma signaturePosition, y el tipo de firma utilizado signatureAlg. Estas propiedades se incluyen a partir de un string definido en las constantes del programa y se incluye en un objeto Properties de Axis.

Así se procede al envío de la petición invocando la operación sign() y se recoge la respuesta en un objeto SignResponse.

SignResponse srs = bindingDs.sign(sr);

Después de ejecutar el ejemplo se obtiene una respuesta como la siguiente y un archivo con la firma.

File saved successfully on: data/output/demo-file-signed.pdf