Geração de PDF em Go: Visão geral das bibliotecas e guia prático

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 Go (Golang): Visão geral completa de ferramentas e bibliotecas



Aplicações web modernas e microsserviços frequentemente exigem a geração de documentos PDF: relatórios, faturas, notas fiscais, certificados ou simplesmente exportação de dados. A linguagem Go oferece várias soluções maduras para essa tarefa. Neste artigo, vamos analisar detalhadamente as principais bibliotecas, seus recursos, exemplos de uso e ajudar você a escolher a ferramenta adequada para o seu projeto no pythonlib.ru.



Por que usar Go para gerar PDF?



Go (Golang) é uma linguagem compilada, estaticamente tipada, conhecida por seu desempenho e simplicidade. Ao gerar PDF, isso oferece as seguintes vantagens:

  • Alta velocidade — os binários Go funcionam rapidamente e usam memória de forma eficiente.
  • Facilidade de implantação — um único arquivo executável sem dependências externas (exceto nos casos com wkhtmltopdf).
  • Suporte nativo a concorrência — é possível processar várias solicitações de geração de PDF simultaneamente.
  • Multiplataforma — compile uma vez e execute em Linux, Windows, macOS.


Principais bibliotecas para trabalhar com PDF em Go



Vamos considerar três abordagens populares: implementação pura em Go (gofpdf), biblioteca comercial profissional (uniPDF) e conversão de HTML para PDF (wkhtmltopdf).



1. gofpdf — biblioteca simples e leve



gofpdf (agora github.com/jung-kurt/gofpdf) é uma das primeiras e mais difundidas bibliotecas para criar PDF em Go puro. Ela não requer dependências externas e permite desenhar programaticamente texto, linhas, imagens e tabelas.



Exemplo de criação de um PDF simples com texto e imagem:



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, "Olá, mundo!") // Adiciona uma imagem (logotipo) pdf.ImageOptions("logo.png", 10, 20, 50, 0, false, gofpdf.ImageOptions{ImageType: "PNG", ReadDpi: true}, 0, "") // Salva no arquivo err := pdf.OutputFileAndClose("output.pdf") if err != nil { panic(err) }}


Pontos positivos:

  • Totalmente em Go — sem programas externos.
  • Leve e fácil de instalar.
  • Suporte a Unicode (incluindo cirílico) através de fontes incorporadas.

Pontos negativos:

  • Suporte limitado para layouts complexos (por exemplo, não há soluções prontas para tabelas complexas).
  • Posicionamento manual de elementos — adequado para documentos simples.


2. UniPDF — solução profissional para tarefas complexas



UniPDF (de github.com/unidoc/unipdf/v3) é uma poderosa biblioteca comercial que oferece controle quase total sobre PDF. Ela suporta criação, edição, conversão e extração de dados de PDF. Para projetos educacionais e sem fins lucrativos, existe uma versão gratuita com limitações.



Exemplo de criação de relatório com tabela:



package main

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

func main() { // Informe a licença (gratuita para testes) license.SetMeteredKey("sua_chave") c := creator.New() c.NewPage() // Título chapter := c.NewChapter("Relatório do mês") chapter.Add(c.NewParagraph("Dados de vendas")) // Tabela table := c.NewTable(3) table.SetColumnWidths(100, 100, 100) headers := []string{"Produto", "Quantidade", "Valor"} for _, h := range headers { cell := table.NewCell() cell.SetBackgroundColor(creator.Col

Recommendations