Agregar imágen a reporte con IText y Java

IText es una librería de código abierto que nos permite crear y manipular archivos PDF. Entre las bondades de esta librería está el poder manejar imágenes en nuestros documentos generados de manera dinámica. En este artículo les voy a mostrar cómo insertar imágenes en un tabla dentro de un reporte. Lo primero que debemos hacer es tener agregado el archivo jar a nuestro proyecto tal como se muestra en la siguiente imagen:


Luego de esto, deberíamos tener una clase como la que se muestra:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rolandopalermo.blog.facturacion;

/**
 *
 * @author Rolando
 */
import com.itextpdf.text.BadElementException;
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.net.MalformedURLException;

public class Reporte {

    public static final String RESULTADO = "D:\test.pdf";

    public void crearPDF(String filename) throws IOException, DocumentException {
        // Paso 1
        Document document = new Document(PageSize.A4, 30, 30, 30, 30);
        // Paso 2
        PdfWriter.getInstance(document, new FileOutputStream(filename));
        // Paso 3
        document.open();
        // Paso 4
        PdfPTable table = crearTabla();
        document.add(table);
        // Paso 5
        document.close();
    }

    public static PdfPTable crearTabla() throws DocumentException, BadElementException, MalformedURLException, IOException {
        PdfPTable table = new PdfPTable(2);
        table.setWidthPercentage(100f);
        PdfPCell cell;
        Image image = Image.getInstance("mudvayne.jpg");
        cell = new PdfPCell(image);
        table.addCell(cell);
        cell = new PdfPCell(new Phrase("Mudvayne es una banda de metal alternativo formada en Peoria, Illinois en 1996. Consta de cuatro miembros, el cantante principal Chad Gray, Greg Tribbett en guitarras, Ryan Martinie en bajos y Matthew McDonough en batería."));
        table.addCell(cell);
        return table;
    }

    public static void main(String[] args) throws IOException, DocumentException {
        new Reporte().crearPDF(RESULTADO);
    }
}
Y este sería el resultado sería el siguiente:


Como vemos, poder agregar imágenes con iText es relativmanete sencillo. En un siguiente artículo les mostraré algunas cosas adicionales que podemos hacer con iText. Saludos y hasta una próxima oportunidad.

Comentarios