Generación de PDF en Go: Revisión de bibliotecas y guía práctica

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 Go (Golang): Revisión completa de herramientas y bibliotecas



Las aplicaciones web modernas y los microservicios a menudo requieren la generación de documentos PDF: informes, facturas, albaranes, certificados o simplemente exportación de datos. El lenguaje Go ofrece varias soluciones maduras para esta tarea. En este artículo, analizaremos en detalle las principales bibliotecas, sus capacidades, ejemplos de uso y le ayudaremos a elegir la herramienta adecuada para su proyecto en pythonlib.ru.



¿Por qué usar Go para la generación de PDF?



Go (Golang) es un lenguaje compilado, estáticamente tipado, conocido por su rendimiento y simplicidad. Al generar PDF, esto ofrece las siguientes ventajas:

  • Alta velocidad — los archivos binarios de Go funcionan rápidamente y utilizan la memoria de manera eficiente.
  • Facilidad de implementación — un solo archivo ejecutable sin dependencias externas (excepto en casos con wkhtmltopdf).
  • Soporte integrado de concurrencia — puede procesar múltiples solicitudes de generación de PDF simultáneamente.
  • Multiplataforma — compile una vez y ejecute en Linux, Windows, macOS.


Bibliotecas principales para trabajar con PDF en Go



Consideremos tres enfoques populares: una implementación pura en Go (gofpdf), una biblioteca comercial profesional (uniPDF) y la conversión de HTML a PDF (wkhtmltopdf).



1. gofpdf — biblioteca simple y ligera



gofpdf (ahora github.com/jung-kurt/gofpdf) es una de las primeras y más comunes bibliotecas para crear PDF en Go puro. No requiere dependencias externas y permite dibujar mediante programación texto, líneas, imágenes y tablas.



Ejemplo de creación de un PDF simple con texto e imagen:



package main

import ( "github.com/jung-kurt/gofpdf")

func main() { pdf := gofpdf.New("P", "mm", "A4", "") pdf.AddPage() pdf.SetFont("Arial", "B", 16) pdf.Cell(40, 10, "¡Hola, mundo!") // Añadir imagen (logotipo) pdf.ImageOptions("logo.png", 10, 20, 50, 0, false, gofpdf.ImageOptions{ImageType: "PNG", ReadDpi: true}, 0, "") // Guardar en archivo err := pdf.OutputFileAndClose("output.pdf") if err != nil { panic(err) }}


Ventajas:

  • Completamente en Go — sin programas externos.
  • Ligero y fácil de instalar.
  • Soporte Unicode (incluyendo cirílico) mediante fuentes integradas.

Desventajas:

  • Soporte limitado para diseños complejos (por ejemplo, no hay soluciones listas para tablas complejas).
  • Posicionamiento manual de elementos — adecuado para documentos simples.


2. UniPDF — solución profesional para tareas complejas



UniPDF (de github.com/unidoc/unipdf/v3) es una potente biblioteca comercial que proporciona un control casi total sobre PDF. Admite creación, edición, conversión y extracción de datos de PDF. Para proyectos educativos y sin fines de lucro, existe una versión gratuita con limitaciones.



Ejemplo de creación de un informe con tabla:



package main

import ( "github.com/unidoc/unipdf/v3/common/license" "github.com/unidoc/unipdf/v3/creator")

func main() { // Especifique la licencia (gratuita para pruebas) license.SetMeteredKey("su_clave") c := creator.New() c.NewPage() // Título chapter := c.NewChapter("Informe mensual") chapter.Add(c.NewParagraph("Datos de ventas")) // Tabla table := c.NewTable(3) table.SetColumnWidths(100, 100, 100) headers := []string{"Producto", "Cantidad", "Total"} for _, h := range headers { cell := table.NewCell() cell.SetBackgroundColor(creator.Col

Recommendations