Geração de PDF em Java: visão geral das bibliotecas iText, Apache PDFBox, OpenPDF

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geração de PDF em Java: visão geral das bibliotecas populares



Criar documentos PDF é uma das tarefas comuns no desenvolvimento corporativo e educacional em Java. Relatórios, faturas, certificados, materiais didáticos — tudo isso é conveniente para exportar em PDF. Em Java, existem várias bibliotecas maduras que permitem tanto criar PDF do zero quanto editar arquivos existentes. Neste artigo, vamos analisar as três ferramentas mais populares: iText, Apache PDFBox e OpenPDF.



1. iText — poderoso, mas com restrições de licenciamento



iText é a biblioteca Java mais conhecida para trabalhar com PDF. Ela existe desde 2000 e suporta praticamente todos os recursos do formato: texto, tabelas, imagens, marcas d'água, anotações, assinaturas e muito mais.



No entanto, o iText tem uma nuance importante: a partir da versão 5.5.x, a biblioteca é distribuída sob licença dupla. Para uso comercial, é necessária a compra de uma licença AGPL, a menos que você distribua seu aplicativo com código aberto. Para projetos educacionais disponibilizados publicamente, a versão iText 5.x sob AGPL é adequada.



Exemplo de criação de um PDF simples com texto e tabela usando iText 5:



import com.itextpdf.text.*;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;import java.io.FileOutputStream;

public class ITextExample { public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("example_itext.pdf")); document.open();

// Título document.add(new Paragraph("Exemplo de PDF com iText", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 18)));

// Tabela PdfPTable table = new PdfPTable(3); table.addCell("Coluna 1"); table.addCell("Coluna 2"); table.addCell("Coluna 3"); table.addCell("Dados 1"); table.addCell("Dados 2"); table.addCell("Dados 3"); document.add(table);

document.close(); System.out.println("PDF criado: example_itext.pdf"); }}


2. Apache PDFBox — gratuito e de código aberto



Apache PDFBox é uma biblioteca totalmente gratuita sob licença Apache 2.0. Ela não tem restrições para uso comercial e fornece uma API de baixo nível para trabalhar com PDF. O PDFBox permite criar documentos, extrair texto, preencher formulários, trabalhar com imagens e até criar layouts complexos.



A principal vantagem do PDFBox é a flexibilidade e a ausência de taxas de licenciamento. A desvantagem é que a API é menos conveniente para tarefas simples do que o iText e requer mais código para formatação.



Exemplo de criação de PDF com texto e tabela usando PDFBox 2.x:



import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel.font.PDType1Font;import org.apache.pdfbox.pdmodel.common.PDRectangle;import java.io.IOException;

public class PDFBoxExample { public static void main(String[] args) throws IOException { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(PDRectangle.A4); document.addPage(page);

try (PDPageContentStream cs = new PDPageContentStream(document, page)) { // Título cs.setFont(PDType1Font.HELVETICA_BOLD, 18); cs.beginText(); cs.newLineAtOffset(50, 750); cs.showText("Exemplo de PDF com PDFBox"); cs.endText();

// Tabela simples (simulação) cs.setFont(PDType1Font.HELVETICA, 12); cs.setLineWidth(1f); // Desenhamos as linhas da tabela manualmente (simplificado) for (int i = 0; i < 4;

Recommendations