...
1.- Uso de la librería
Es una librería propia del proyecto AMD para ayudar a introducir las bandas de firma en un pdf.
Permite realizar modificaciones concretas sobre un documento (PDF, TIFF o imagen), para adecuarlo a los requisitos de la DGA sobre certificación y archivo a largo plazo de documentos.
Las modificaciones que se pueden realizar son:
Si el documento es un formulario, rellenar sus campos e incluirlos en los metadatos del documento.
Añadir marca de agua si el documento es de tipo borrador.
Añadir una banda en cualquier lado de la página, con un texto de firma (editable).
Añadir metadatos.
Insertar imágenes o textos a modo de sellos o firmas en cualquier página y en cualquier posición.
Paginar el documento.
La aplicación generará un documento de tipo PDF/A-1b.
Las clases configuradoras definen cómo se va a procesar el documento y qué elementos va a contener. Cuando se instancie un objeto de tipo PDFBasicGenerator, se pasará como parámetros dos objetos configuradores: uno de tipo PDFOptions y otro de tipo BandOptions.
1.1- PdfOptions
PDFOptions es la clase que define las propiedades del documento PDF: datos del formulario a rellenar, datos de la banda, estilo normal o borrador, paginación, orientación y tamaño de página, contraseña del documento original, imágenes a añadir al documento. Se pueden configurar algunos de los siguientes parámetros:
Password: Si el documento está protegido con contraseña, se podrá indicar la contraseña aquí. Si la contraseña es incorrecta, se lanzará una excepción de tipo ProtectedDocumentException.
values: Si el documento es un formulario, se pueden rellenar sus campos introduciendo un Map en esta variable, siendo el primer parámetro el nombre del campo y el segundo su valor. Estos también serán guardados en los metadatos del documento.
draft: Si se establece a "true", se añadirá una marca de agua "BORRADOR" en diagonal al documento.
pdfInfo: Para añadir una banda al documento, se crea un objeto de tipo PDFInfo y se introduce aquí. La banda contiene un texto editable.
textsToAdd: Se añadirán textos en cualquier parte y página del documento, instanciando objetos PDFText e insertándolos uno por uno en esta variable.
imagesToAdd: Se añadirán imágenes en cualquier parte y página del documento, instanciando objetos PDFImage e insertándolos uno por uno en esta variable.
1.2- BandOptions
BandOptions es la clase con la que se definen las propiedades de la banda y si el contenido del PDF debe escalarse una vez añadida la banda.
Si añadimos una banda al documento, se pueden configurar los siguientes parámetros:
bandSide: Especifica la ubicación de la banda en el documento: arriba, abajo (en horizontal), izquierda o derecha (en vertical). La opción por defecto es: BandOptions.LEFT.
draft: Añadirá el texto "Borrador" como fondo a lo largo de la banda.
textFont: Fuente del texto de la banda.
textSize: Tamaño del texto de la banda.
scaleContent: Indica si el contenido de la página se reducirá (y centrará) en el hueco disponible después de añadir la banda, o se dejará tal cual.
Para insertar una imagen en una posición y página del documento, se instancia un objeto PDFImage con los siguientes parámetros, y se introduce en el objeto PDFOptions con setImagesToAdd:
Imagen.
Posición.
Escalado.
Para insertar un texto en una posición y página del documento, se instancia un objeto PDFText con los siguientes parámetros, y se introduce en el objeto PDFOptions llamando al método setTextsToAdd:
Texto.
Tamaño.
Alineación.
1.3 Ejecución de PDFBasicGenerator
Para generar el documento PDF final, habrá que instanciar los siguientes objetos:
Un objeto de tipo PDFOptions.
Un objeto de tipo PDFInfo (opcional), para insertar una banda en el documento.
Uno de tipo BandOptions (opcional), para configurar los parámetros de la banda.
Uno o varios objetos de tipo PDFImage o PDFText (opcionales) para insertar imágenes y textos en el documento.
Se instancia un objeto de tipo PDFBasicGenerator con uno o dos parámetros, los objeto PDFOptions y BandOptions definidos anteriormente.
Por último, se llama al método generate(input), donde "input" es un String (una ruta de archivo), byte[] o InputStream con el documento, que puede ser de tipo PDF o TIFF, o bien una imagen JPEG, GIF, PNG o BMP, o una "Image" de tipo iText.