Generación de PDF en Kotlin: bibliotecas y herramientas (iText, Apache PDFBox)

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Generación de PDF en Kotlin: resumen de bibliotecas y ejemplos prácticos



Kotlin, como lenguaje moderno para JVM, ofrece a los desarrolladores potentes herramientas para trabajar con documentos PDF. Gracias a la compatibilidad total con el ecosistema Java, puede utilizar bibliotecas probadas como iText y Apache PDFBox, así como frameworks modernos de Kotlin. En este artículo, revisaremos los enfoques principales para la generación de PDF en Kotlin, proporcionaremos ejemplos de código y compararemos las soluciones más populares.



¿Por qué Kotlin para trabajar con PDF?



Kotlin ofrece varias ventajas sobre Java al trabajar con PDF:

  • Sintaxis concisa — menos código repetitivo para crear documentos
  • Seguridad contra nulos — reduce el riesgo de errores al trabajar con campos anulables
  • Funciones de extensión — permiten ampliar la funcionalidad de las bibliotecas
  • Constructores DSL — ideales para describir la estructura del PDF
  • Compatibilidad total — todas las bibliotecas Java funcionan sin cambios


Bibliotecas principales para la generación de PDF



1. iText (iText 7 / iText 8)



iText es la biblioteca comercial más popular para trabajar con PDF. Para Kotlin está disponible a través de la interoperabilidad con Java. Incluye módulos:

  • kernel — operaciones básicas con PDF
  • layout — construcción de documentos de alto nivel
  • html2pdf — conversión de HTML a PDF
  • pdfa — soporte para PDF/A


Ejemplo de creación de un PDF simple con iText 7 en 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("¡Hola, Kotlin!")) document.add(Paragraph("Este es un PDF creado con iText 7")) document.close() println("PDF creado exitosamente")}


2. Apache PDFBox



Apache PDFBox es una biblioteca gratuita de código abierto. Es ideal para tareas básicas: creación, edición, extracción de texto. En Kotlin se utiliza a través de la API de Java.



Ejemplo con 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 guardado")}


3. Kotlin DSL para PDF (KPDF)



KPDF es una biblioteca nativa de Kotlin que utiliza constructores DSL. Permite describir el documento de forma declarativa:



// Ejemplo con un DSL hipotético (adaptación a bibliotecas reales)fun generateInvoice() {    pdfDocument {        page {            paragraph("Factura Nº123") {                fontSize = 24                bold()            }            table {                row { cell("Producto"); cell("Precio") }                row { cell("Consultoría Kotlin"); cell("5000 RUB") }            }        }    }.save("invoice.pdf")}

Recommendations