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 PDFlayout— construção de documentos em alto nívelhtml2pdf— conversão de HTML para PDFpdfa— 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")} Também na biblioteca
Trabalhando com Excel em Swift no iOS e macOS: bibliotecas e exemplos
neverthrow para TypeScript: guia completo com exemplos
Criação de aplicações CLI em TypeScript: visão geral de frameworks e ferramentas
ring para Rust: guia completo com exemplos práticos