Geração de relatórios PDF em Java: visão geral das bibliotecas e exemplos de código
Criar documentos PDF é uma das tarefas comuns em aplicações Java corporativas: desde a geração de faturas e atas até a construção de relatórios analíticos complexos com gráficos. Neste artigo, vamos analisar três bibliotecas principais para gerar PDF em Java — iText, Apache PDFBox e JasperReports — comparar suas funcionalidades e apresentar exemplos práticos de código.
1. iText — biblioteca poderosa e flexível
iText (atualmente iText 8.x) é uma das bibliotecas mais populares para trabalhar com PDF em Java. Suporta criação de documentos do zero, edição de documentos existentes, adição de imagens, tabelas, marcadores, marcas d'água, além de trabalhar com formulários e assinaturas digitais.
Licenciamento: iText é distribuído sob licença dupla — AGPL (gratuito para projetos open-source) e comercial (para software proprietário).
Exemplo: criação de um documento PDF simples com texto e tabela
import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Paragraph;import com.itextpdf.layout.element.Table;import com.itextpdf.layout.element.Cell;
public class ItextPdfExample { public static void main(String[] args) throws Exception { String dest = "report.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf);
// Título document.add(new Paragraph("Relatório de Vendas").setBold().setFontSize(18));
// Tabela Table table = new Table(3); table.addCell(new Cell().add(new Paragraph("Produto"))); table.addCell(new Cell().add(new Paragraph("Quantidade"))); table.addCell(new Cell().add(new Paragraph("Valor"))); table.addCell("Notebook"); table.addCell("5"); table.addCell("R$ 450.000,00"); table.addCell("Mouse"); table.addCell("12"); table.addCell("R$ 6.000,00");
document.add(table); document.close(); System.out.println("PDF criado!"); }}Este código cria um PDF com o título "Relatório de Vendas" e uma tabela de três colunas. O iText lida automaticamente com quebras de linha e divisão de páginas.
2. Apache PDFBox — alternativa leve e gratuita
Apache PDFBox é uma biblioteca de código aberto (licença Apache 2.0) que permite criar, editar e extrair texto de arquivos PDF. O PDFBox não requer dependências de terceiros e é ideal para tarefas simples: geração de documentos de texto, preenchimento de formulários, extração de dados.
Desvantagem: trabalhar com tabelas e layouts complexos exige mais código manual do que no iText.
Exemplo: criação de PDF com texto e imagem
import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel.font.PDType0Font;import java.io.File;
public class PdfBoxExample { public static void main(String[] args) throws Exception { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(); document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page); // Carregar fonte (obrigatório!) PDType0Font font = PDType0Font.load(document, new File("LiberationSans-Regular.ttf")); contentStream.setFont(font, 14); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); contentStream.showText("Olá, mundo PDFBox!"); contentStream.endText(); contentStream.close();
Também na biblioteca
Trabalho com CSV em C++: biblioteca libcsv e ferramentas padrão
Internacionalização (i18n) em PHP: biblioteca gettext e abordagens modernas
Trabalhando com YAML em Kotlin: bibliotecas, exemplos e parsing
Bucket4j Java: Guia completo com exemplos práticos