Geração de PDF em Kotlin: visão geral de bibliotecas e ferramentas

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 Kotlin: visão geral de bibliotecas e exemplos práticos



A geração de documentos PDF é uma das tarefas comuns em aplicações modernas: desde a criação de relatórios e faturas até a exportação de dados. Kotlin, sendo uma linguagem JVM moderna, oferece aos desenvolvedores acesso a poderosas bibliotecas Java para trabalhar com PDF. Neste artigo, veremos as principais ferramentas para geração de PDF em Kotlin, suas características e exemplos de uso.



Bibliotecas populares para trabalhar com PDF em Kotlin



Como Kotlin é totalmente compatível com Java, você pode usar qualquer biblioteca Java para PDF. As opções mais populares são:



  • iText (versão 7/8) — biblioteca comercial de código aberto (AGPL). Oferece amplas possibilidades: criação de documentos do zero, trabalho com formulários, marcas d'água, criptografia. Para uso comercial, é necessária a compra de uma licença.
  • Apache PDFBox — biblioteca gratuita (Apache 2.0). Permite criar PDF, extrair texto, preencher formulários. Funciona em um nível mais baixo que o iText, mas oferece controle total sobre o conteúdo.
  • OpenPDF — fork do iText 4 (LGPL/MPL). Biblioteca leve para tarefas básicas: criação de texto, tabelas, imagens. Adequada para projetos simples sem layout complexo.
  • Jetpack Compose + PDF — abordagem moderna: você descreve a UI no Compose e depois a converte em PDF usando bibliotecas Android (por exemplo, android.graphics.pdf.PdfDocument). Adequado para aplicativos Android.


Configuração do projeto e inclusão de dependências



Para demonstração, usaremos iText 7 e Apache PDFBox. Adicione as dependências no build.gradle.kts:



// Para iText 7implementation("com.itextpdf:itext7-core:8.0.4")

// Para Apache PDFBoximplementation("org.apache.pdfbox:pdfbox:3.0.2")


Exemplo 1: Criando PDF com texto (iText 7)



Vamos criar um documento simples com título e parágrafo:



import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Paragraph

fun createSimplePdf() { val writer = PdfWriter("output.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

document.add(Paragraph("Olá, mundo!")) document.add(Paragraph("Este é um PDF criado com iText em Kotlin."))

document.close()}


Exemplo 2: Trabalhando com tabelas e cirílico (iText 7)



Para a exibição correta do cirílico, é necessário carregar uma fonte que suporte Unicode. Use a fonte padrão FreeSans ou qualquer fonte TTF:



import com.itextpdf.kernel.font.PdfFontFactoryimport com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Cellimport com.itextpdf.layout.element.Paragraphimport com.itextpdf.layout.element.Table

fun createTableWithCyrillic() { val writer = PdfWriter("table.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

// Carregando fonte com suporte a cirílico val font = PdfFontFactory.createFont("fonts/FreeSans.ttf", "Identity-H") document.setFont(font)

val table = Table(2) // duas colunas table.addCell(Cell().add(Paragraph("Nome"))) table.addCell(Cell().add(Paragraph("Idade"))) table.addCell(Cell().add(Paragraph("Ana"))) table.addCell(Cell().add(Paragraph("25"))) table.addCell(Cell().add(Paragraph("Ivan"))) table.addCell(Cell().add(Paragraph("30")))

document.add(table) document.close()}


Exemplo 3: Criando PDF com imagem (Apache PDFBox)



O PDFBox exige um trabalho mais detalhado com coordenadas, mas oferece flexibilidade:




                
    
    

Recommendations