Geração de PDF em Go (Golang): bibliotecas e exemplos

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): revisão de bibliotecas e ferramentas



Criar documentos PDF é uma das tarefas comuns no desenvolvimento web. No ecossistema Go (Golang), existem várias bibliotecas maduras que permitem gerar PDF tanto para relatórios simples quanto para documentos complexos de várias páginas com tabelas, gráficos e fontes. Neste artigo, vamos analisar as principais ferramentas, suas funcionalidades e fornecer exemplos práticos de código.



Por que Go para geração de PDF?

Go é uma linguagem compilada com excelente desempenho e um modelo de concorrência simples. Para tarefas de geração de PDF, isso significa:

  • Processamento rápido de grandes volumes de dados
  • Integração fácil com servidores web (net/http)
  • Possibilidade de paralelizar a geração de vários documentos
  • Ausência de dependências externas (o binário inclui tudo o que é necessário)


Principais bibliotecas para trabalhar com PDF em Go



1. gofpdf — biblioteca simples e popular

gofpdf é uma adaptação da conhecida biblioteca PHP FPDF para Go. Ela oferece uma API simples para criar PDF com elementos básicos: texto, linhas, retângulos, imagens e tabelas. A biblioteca não requer dependências externas e suporta Unicode através da incorporação de fontes.



Exemplo de criação de um PDF simples com gofpdf:

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!") pdf.OutputFileAndClose("hello.pdf")}


Principais funcionalidades do gofpdf:

  • Suporte a UTF-8 (requer incorporação de fontes TrueType)
  • Quebras de página automáticas
  • Gráficos vetoriais (linhas, curvas, preenchimentos)
  • Incorporação de imagens (JPEG, PNG, GIF)
  • Tabelas com dados dinâmicos


2. UniPDF — biblioteca comercial poderosa

UniPDF (anteriormente FoxyUtils) é uma solução profissional para trabalhar com PDF em Go. A biblioteca tem código aberto, mas para uso comercial é necessária uma licença. O UniPDF suporta não apenas a criação, mas também a edição, conversão e extração de dados de PDF.



Exemplo de criação de PDF com UniPDF:

package main

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

func main() { c := creator.New() c.NewPage() // Adicionando texto text := c.NewStyledParagraph() text.Append("Exemplo de documento UniPDF") text.SetFontSize(18) c.Draw(text) // Salvando c.WriteToFile("unipdf_example.pdf")}


Funcionalidades exclusivas do UniPDF:

  • Análise completa e edição de PDFs existentes
  • Suporte a formulários, anotações e marcadores
  • Conversão de HTML para PDF
  • Trabalho com assinaturas digitais
  • Extração de texto e imagens


3. Maroto — gerador de PDF baseado em componentes visuais

Maroto é construído sobre o gofpdf e oferece uma abordagem de nível mais alto usando o conceito de "grade" (grid). Isso é conveniente para criar relatórios, faturas e outros documentos estruturados.



Exemplo com Maroto:

package main

import ( "fmt" "github.com/johnfercher/maroto/v2/pkg/consts/align" "github.com/johnfercher/maroto/v2/pkg/consts/fontstyle" "github.com/johnfercher/maroto/v2/pkg/core" "github.com/johnfercher/maroto/v2/pkg/props" "github.com/johnfercher/maroto/v2")

func main() { m := maroto.New() m.Row(20, func() { m.Col(12, func() { m.Text("Fatura nº123", props.Text{ Style: fontstyle.Bold, Align: align.Center, }) }) }) document, err := m.Generate() if err != nil {

Recommendations