Génération de PDF en Go : Aperçu des bibliothèques et guide pratique

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 complet des outils et bibliothèques



Les applications web modernes et les microservices nécessitent souvent la génération de documents PDF : rapports, factures, bons de livraison, certificats ou simplement export de données. Le langage Go propose plusieurs solutions matures pour cette tâche. Dans cet article, nous allons détailler les principales bibliothèques, leurs fonctionnalités, des exemples d'utilisation et vous aider à choisir l'outil adapté à votre projet sur pythonlib.ru.



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



Go (Golang) est un langage compilé, statiquement typé, réputé pour ses performances et sa simplicité. Pour la génération de PDF, cela offre les avantages suivants :

  • Haute vitesse — les fichiers binaires Go sont rapides et utilisent efficacement la mémoire.
  • Simplicité de déploiement — un seul fichier exécutable sans dépendances externes (sauf dans le cas de wkhtmltopdf).
  • Support intégré de la concurrence — possibilité de traiter plusieurs requêtes de génération de PDF simultanément.
  • Multiplateforme — compilez une fois et exécutez sur Linux, Windows, macOS.


Principales bibliothèques pour travailler avec les PDF en Go



Examinons trois approches populaires : une implémentation pure en Go (gofpdf), une bibliothèque professionnelle commerciale (uniPDF) et la conversion HTML en PDF (wkhtmltopdf).



1. gofpdf — une bibliothèque simple et légère



gofpdf (maintenant github.com/jung-kurt/gofpdf) est l'une des premières et des plus répandues bibliothèques pour créer des PDF en Go pur. Elle ne nécessite aucune dépendance externe et permet de dessiner programmatiquement du texte, des lignes, des images et des tableaux.



Exemple de création d'un PDF simple avec du texte et une image :



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 !") // Ajout d'une image (logo) pdf.ImageOptions("logo.png", 10, 20, 50, 0, false, gofpdf.ImageOptions{ImageType: "PNG", ReadDpi: true}, 0, "") // Sauvegarde dans un fichier err := pdf.OutputFileAndClose("output.pdf") if err != nil { panic(err) }}


Avantages :

  • Entièrement en Go — aucun programme externe.
  • Léger et installation simple.
  • Support Unicode (y compris le cyrillique) via les polices intégrées.

Inconvénients :

  • Support limité des mises en page complexes (par exemple, pas de solutions prêtes pour les tableaux complexes).
  • Positionnement manuel des éléments — adapté aux documents simples.


2. UniPDF — une solution professionnelle pour les tâches complexes



UniPDF (de github.com/unidoc/unipdf/v3) est une puissante bibliothèque commerciale qui offre un contrôle quasi total sur les PDF. Elle prend en charge la création, l'édition, la conversion et l'extraction de données à partir de PDF. Pour les projets éducatifs et non commerciaux, il existe une version gratuite avec des limitations.



Exemple de création d'un rapport avec un tableau :



package main

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

func main() { // Spécifiez la licence (gratuite pour les tests) license.SetMeteredKey("votre_clé") c := creator.New() c.NewPage() // Titre chapter := c.NewChapter("Rapport mensuel") chapter.Add(c.NewParagraph("Données de ventes")) // Tableau table := c.NewTable(3) table.SetColumnWidths(100, 100, 100) headers := []string{"Produit", "Quantité", "Montant"} for _, h := range headers { cell := table.NewCell() cell.SetBackgroundColor(creator.Col

Recommendations