Geração de PDF em Kotlin: bibliotecas e ferramentas (iText, Apache PDFBox)

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 das bibliotecas e exemplos práticos



Kotlin, como uma linguagem moderna para JVM, oferece aos desenvolvedores ferramentas poderosas para trabalhar com documentos PDF. Graças à total compatibilidade com o ecossistema Java, você pode usar bibliotecas consolidadas, como iText e Apache PDFBox, além de frameworks Kotlin modernos. Neste artigo, abordaremos as principais abordagens para geração de PDF em Kotlin, forneceremos exemplos de código e compararemos soluções populares.



Por que Kotlin para trabalhar com PDF?



Kotlin oferece várias vantagens em relação ao Java ao trabalhar com PDF:

  • Sintaxe concisa — menos código boilerplate para criar documentos
  • Segurança contra nulos — reduz o risco de erros ao trabalhar com campos anuláveis
  • Funções de extensão — permitem estender a funcionalidade das bibliotecas
  • Construtores DSL — ideais para descrever a estrutura do PDF
  • Compatibilidade total — todas as bibliotecas Java funcionam sem alterações


Principais bibliotecas para geração de PDF



1. iText (iText 7 / iText 8)



iText é a biblioteca comercial mais popular para trabalhar com PDF. Para Kotlin, está disponível através de interoperabilidade Java. Inclui módulos:

  • kernel — operações básicas com PDF
  • layout — construção de documentos em alto nível
  • html2pdf — conversão de HTML para PDF
  • pdfa — suporte a PDF/A


Exemplo de criação de um PDF simples com iText 7 em Kotlin:



import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Paragraphimport java.io.FileOutputStream

fun createSimplePdf() { val writer = PdfWriter(FileOutputStream("hello_kotlin.pdf")) val pdfDoc = PdfDocument(writer) val document = Document(pdfDoc) document.add(Paragraph("Olá, Kotlin!")) document.add(Paragraph("Este é um PDF criado com iText 7")) document.close() println("PDF criado com sucesso")}


2. Apache PDFBox



Apache PDFBox é uma biblioteca gratuita de código aberto. Excelente para tarefas básicas: criação, edição, extração de texto. Em Kotlin, é usado através da API Java.



Exemplo com PDFBox:



import org.apache.pdfbox.pdmodel.PDDocumentimport org.apache.pdfbox.pdmodel.PDPageimport org.apache.pdfbox.pdmodel.PDPageContentStreamimport org.apache.pdfbox.pdmodel.font.PDType1Fontimport java.io.File

fun createPdfWithBox() { val document = PDDocument() val page = PDPage() document.addPage(page) val contentStream = PDPageContentStream(document, page) contentStream.beginText() contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14f) contentStream.newLineAtOffset(50f, 700f) contentStream.showText("PDFBox + Kotlin = ❤") contentStream.endText() contentStream.close() document.save(File("pdfbox_example.pdf")) document.close() println("Documento salvo")}


3. Kotlin DSL para PDF (KPDF)



KPDF é uma biblioteca nativa Kotlin que usa construtores DSL. Permite descrever o documento de forma declarativa:



// Exemplo com DSL hipotético (adaptação para bibliotecas reais)fun generateInvoice() {    pdfDocument {        page {            paragraph("Fatura nº123") {                fontSize = 24                bold()            }            table {                row { cell("Produto"); cell("Preço") }                row { cell("Consultoria Kotlin"); cell("5000 RUB") }            }        }    }.save("invoice.pdf")}

Recommendations