Geração de PDF em Java: visão geral das melhores 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 iText, Apache PDFBox e OpenPDF

A criação de documentos PDF é uma das tarefas comuns em aplicações corporativas e web em Java: desde a geração de relatórios e faturas até a exportação de dados e criação de livros eletrônicos. Em Java, existem várias bibliotecas maduras, cada uma com seus pontos fortes. Neste artigo, examinaremos três principais: iText, Apache PDFBox e OpenPDF, forneceremos exemplos de código e ajudaremos você a escolher a ferramenta adequada.



1. iText — poderoso, mas com licença comercial

iText é a biblioteca mais popular para trabalhar com PDF. Ela oferece controle total sobre o conteúdo: texto, imagens, tabelas, formulários, marcas d'água, assinaturas. A partir da versão 5.5.x, o iText é distribuído sob licença dupla AGPL (gratuita para projetos open-source) e comercial (para software proprietário). A versão 7.x (iText 7) é mais moderna, modular e de alto desempenho.



Exemplo: criação de um PDF simples com texto (iText 7)

import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Paragraph;

public class CreatePdfWithIText { public static void main(String[] args) throws Exception { String dest = "output_itext.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); document.add(new Paragraph("Olá, mundo PDF!")); document.add(new Paragraph("Isso foi criado com iText 7.")); document.close(); System.out.println("PDF criado com sucesso: " + dest); }}


Vantagens do iText:

  • Máxima flexibilidade: suporte a tabelas, listas, estilos, fontes, imagens.
  • Trabalho com PDF/A, criptografia, assinaturas digitais.
  • Alto desempenho e qualidade de renderização.

Desvantagens:

  • Licença complexa (AGPL) — para uso comercial, é necessária a compra.
  • API bastante extensa, exigindo aprendizado.


2. Apache PDFBox — gratuito e aberto

Apache PDFBox é uma biblioteca de código aberto (licença Apache 2.0) que permite criar, editar e extrair conteúdo de PDF. Ao contrário do iText, o PDFBox não exige licença comercial para projetos proprietários. Ele também suporta trabalho com formulários, criptografia, incorporação de fontes.



Exemplo: criação de PDF com texto (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 java.io.IOException;

public class CreatePdfWithPdfBox { public static void main(String[] args) throws IOException { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(); document.addPage(page); try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { contentStream.beginText(); contentStream.setFont(PDType1Font.HELVETICA, 14); contentStream.newLineAtOffset(50, 700); contentStream.showText("Olá, mundo PDF!"); contentStream.newLineAtOffset(0, -20); contentStream.showText("Isso foi criado com Apache PDFBox."); contentStream.endText(); } document.save("output_pdfbox.pdf"); System.out.println("PDF criado com sucesso: output_pdfbox.pdf"); } }}


Vantagens do Apache PDFBox:

  • Completamente gratuito (licença Apache 2.0) — adequado para qualquer projeto.
  • Suporte para extração de texto, imagens, metadados

Recommendations