Génération de PDF en Go (Golang) : bibliothèques et exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Génération de PDF en Go (Golang) : aperçu des bibliothèques et outils



La création de documents PDF est l'une des tâches courantes en développement web. Dans l'écosystème Go (Golang), il existe plusieurs bibliothèques matures qui permettent de générer des PDF, aussi bien pour des rapports simples que pour des documents complexes de plusieurs pages avec tableaux, graphiques et polices. Dans cet article, nous examinerons les principaux outils, leurs fonctionnalités et fournirons des exemples pratiques de code.



Pourquoi Go pour la génération de PDF ?

Go est un langage compilé avec d'excellentes performances et un modèle de concurrence simple. Pour les tâches de génération de PDF, cela signifie :

  • Traitement rapide de grands volumes de données
  • Intégration facile avec les serveurs web (net/http)
  • Possibilité de paralléliser la génération de plusieurs documents
  • Absence de dépendances externes (le binaire inclut tout le nécessaire)


Principales bibliothèques pour travailler avec les PDF en Go



1. gofpdf — bibliothèque simple et populaire

gofpdf est un portage en Go de la célèbre bibliothèque PHP FPDF. Elle fournit une API simple pour créer des PDF avec des éléments de base : texte, lignes, rectangles, images et tableaux. La bibliothèque ne nécessite pas de dépendances externes et prend en charge Unicode via l'intégration de polices.



Exemple de création d'un PDF simple avec 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, "Bonjour le monde !") pdf.OutputFileAndClose("hello.pdf")}


Fonctionnalités principales de gofpdf :

  • Prise en charge UTF-8 (nécessite l'intégration de polices TrueType)
  • Sauts de page automatiques
  • Graphiques vectoriels (lignes, courbes, remplissages)
  • Intégration d'images (JPEG, PNG, GIF)
  • Tableaux avec données dynamiques


2. UniPDF — bibliothèque commerciale puissante

UniPDF (anciennement FoxyUtils) est une solution professionnelle pour travailler avec les PDF en Go. La bibliothèque est open source, mais nécessite une licence pour une utilisation commerciale. UniPDF prend en charge non seulement la création, mais aussi l'édition, la conversion et l'extraction de données à partir de PDF.



Exemple de création d'un PDF avec UniPDF :

package main

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

func main() { c := creator.New() c.NewPage() // Ajout de texte text := c.NewStyledParagraph() text.Append("Exemple de document UniPDF") text.SetFontSize(18) c.Draw(text) // Sauvegarde c.WriteToFile("unipdf_example.pdf")}


Fonctionnalités uniques d'UniPDF :

  • Analyse et édition complètes des PDF existants
  • Prise en charge des formulaires, annotations et signets
  • Conversion HTML en PDF
  • Travail avec les signatures numériques
  • Extraction de texte et d'images


3. Maroto — générateur de PDF basé sur des composants visuels

Maroto est construit au-dessus de gofpdf et propose une approche de plus haut niveau utilisant le concept de "grille" (grid). C'est pratique pour créer des rapports, des factures et d'autres documents structurés.



Exemple avec 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("Facture n°123", props.Text{ Style: fontstyle.Bold, Align: align.Center, }) }) }) document, err := m.Generate() if err != nil {

Recommendations