Manejo de documentos PDF en Java con iText

4
39907

En este tutorial se mostrará la creación de un documento PDF de forma sencilla y rápida empleando iText y Maven.

Índice de contenidos

1. Introducción

Si por el motivo que fuera se necesita manejar un documento PDF, aunque ya sea para agregar unas líneas o una imagen, una forma sencilla y sin complicaciones de realizar este cometido es emplear iText.

iText nos permite, usando Java, editar o transformar contenido a PDF.
Aunque en este tutorial se trate de forma muy tangente no quiero dar a entender que deba ser un «engine», como lo llaman sus desarrolladores, a tener en cuenta a la ligera ni mucho menos. De hecho es una herramienta muy potente capaz de crear PDFs de formas muy variopintas, mezclarlos y hasta convertir código HTML a PDF.

Antes de comenzar a «trastear» con iText debo aclarar que es gratuito siempre y cuando no se emplee en proyectos cerrados, en dicho caso se requerirá una licencia.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2 Ghz Intel Core I7, 8GB DDR3).
  • Sistema Operativo: Mac OS Sierra 10.12.5
  • Entorno de desarrollo: Eclipse Neon 3
  • Apache Maven 3.5.0

3. Añadir las dependencias en Maven

Una vez creamos nuestro proyecto maven en Eclipse toca añadir las dependencias.

En nuestro caso es tan sencillo como añadir iText como dependencia en el pom.xml de nuestro proyecto:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.10</version>
</dependency>

4. Manejo del documento en Java

Aprovechando que Maven nos ha generado un App.java vamos a usarlo para nuestro pequeño ejemplo:

public class App 
{

	public static void main(String[] args)
    {
        writePDF();
    }
    
    private static void writePDF() {

        Document document = new Document();

        try {
        	String path = new File(".").getCanonicalPath();
        	String FILE_NAME = path + "/itext-test-file.pdf";
        	
            PdfWriter.getInstance(document, new FileOutputStream(new File(FILE_NAME)));

            document.open();

            Paragraph paragraphHello = new Paragraph();
            paragraphHello.add("Hello iText paragraph!");
            paragraphHello.setAlignment(Element.ALIGN_JUSTIFIED);

            document.add(paragraphHello);

            Paragraph paragraphLorem = new Paragraph();
            paragraphLorem.add("Lorem ipsum dolor sit amet, consectetur adipiscing elit."
            		+ "Maecenas finibus fringilla turpis, vitae fringilla justo."
            		+ "Sed imperdiet purus quis tellus molestie, et finibus risus placerat."
            		+ "Donec convallis eget felis vitae interdum. Praesent varius risus et dictum hendrerit."
            		+ "Aenean eu semper nunc. Aenean posuere viverra orci in hendrerit. Aenean dui purus, eleifend nec tellus vitae,"
            		+ " pretium dignissim ex. Aliquam erat volutpat. ");
            
            java.util.List paragraphList = new ArrayList<>();
            
            paragraphList = paragraphLorem.breakUp();

            Font f = new Font();
            f.setFamily(FontFamily.COURIER.name());
            f.setStyle(Font.BOLDITALIC);
            f.setSize(8);
            
            Paragraph p3 = new Paragraph();
            p3.setFont(f);
            p3.addAll(paragraphList);
            p3.add("TEST LOREM IPSUM DOLOR SIT AMET CONSECTETUR ADIPISCING ELIT!");

            document.add(paragraphLorem);
            document.add(p3);
            document.close();

        } catch (FileNotFoundException | DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
			e.printStackTrace();
		}

    }
}

Mediante este código obtenemos el siguiente resultado:

Empleamos principalmente párrafos, aunque cada uno tiene sus peculiaridades. Existen más elementos como imágenes, pero los fundamentos son los mismos.

Podemos modificar el alineamiento del texto añadido ya que los párrafos tienen atributos para tal fin, además de poder cambiar la fuente en tamaño, forma e incluso que se vea en «negrita» o cursiva.

Una función que puede llamar la atención es «addAll» la cual añade todos los elementos de una colección de tipo Element, en este caso, al párrafo, lo que puede dinamizar bastante el crear estos documentos. Llama la atención el hecho de que añade «tal cual» los elementos de la colección, es decir, como puede observarse en la imagen del resultado, el estilo sigue siendo el original y no el que tiene el párrafo.

Cabe destacar que el documento PDF debe abrirse antes de operar con él y debe cerrarse tras las últimas modificaciones.

5. Conclusiones

Como hemos visto anteriormente, el manejo de un documento es muy sencillo, aunque no olvidar que puede complicarse todo lo que queramos ya que nos permite hacer muchas cosas más, pero para ello os invito a probar iText y a revisar los ejemplos que muestran, que podréis encontrar más abajo.

6. Referencias

4 COMENTARIOS

  1. Buenas tardes.
    tengo un problema y estoy atascado, haber si me puedes ayudar por favor.
    necesito hacer una plantilla en pdf para poner los datos de una matricula, el formato es de 52 x 11 cm lo intento hacer con iText 7
    pero cuando empiezo ha agrandarlo al fina no me muestra los números. y necesitaria tambien pone cada número con una seoaración determindada. consigo poner la plantilla pero cuando agrando la font no me deja agrandarlo tanto y me desaparece
    agradezco toda la ayuda posible
    utilizo fontsize
    gracias

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad