PDF-Generierung in Go: Überblick über Bibliotheken und praktische Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

PDF-Generierung in Go (Golang): Vollständiger Überblick über Tools und Bibliotheken



Moderne Webanwendungen und Microservices erfordern häufig die Generierung von PDF-Dokumenten: Berichte, Rechnungen, Lieferscheine, Zertifikate oder einfach nur der Export von Daten. Die Sprache Go bietet mehrere ausgereifte Lösungen für diese Aufgabe. In diesem Artikel werden wir die wichtigsten Bibliotheken, ihre Funktionen und Anwendungsbeispiele im Detail besprechen und Ihnen helfen, das passende Tool für Ihr Projekt auf pythonlib.ru auszuwählen.



Warum Go für die PDF-Generierung verwenden?



Go (Golang) ist eine kompilierte, statisch typisierte Sprache, die für ihre Leistung und Einfachheit bekannt ist. Bei der PDF-Generierung bietet dies folgende Vorteile:

  • Hohe Geschwindigkeit – Go-Binärdateien arbeiten schnell und nutzen den Speicher effizient.
  • Einfache Bereitstellung – eine einzige ausführbare Datei ohne externe Abhängigkeiten (außer bei wkhtmltopdf).
  • Integrierte Nebenläufigkeitsunterstützung – mehrere Anfragen zur PDF-Generierung können gleichzeitig verarbeitet werden.
  • Plattformunabhängigkeit – Einmal kompilieren und auf Linux, Windows, macOS ausführen.


Wichtige Bibliotheken für die Arbeit mit PDF in Go



Betrachten wir drei gängige Ansätze: eine reine Go-Implementierung (gofpdf), eine professionelle kommerzielle Bibliothek (uniPDF) und die Konvertierung von HTML in PDF (wkhtmltopdf).



1. gofpdf – eine einfache und leichte Bibliothek



gofpdf (jetzt github.com/jung-kurt/gofpdf) ist eine der ersten und am weitesten verbreiteten Bibliotheken zur PDF-Erstellung in reinem Go. Sie benötigt keine externen Abhängigkeiten und ermöglicht das programmatische Zeichnen von Text, Linien, Bildern und Tabellen.



Beispiel für die Erstellung eines einfachen PDFs mit Text und Bild:



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, "Hallo, Welt!") // Bild hinzufügen (Logo) pdf.ImageOptions("logo.png", 10, 20, 50, 0, false, gofpdf.ImageOptions{ImageType: "PNG", ReadDpi: true}, 0, "") // In Datei speichern err := pdf.OutputFileAndClose("output.pdf") if err != nil { panic(err) }}


Vorteile:

  • Vollständig in Go – keine externen Programme erforderlich.
  • Geringes Gewicht und einfache Installation.
  • Unicode-Unterstützung (einschließlich Kyrillisch) durch integrierte Schriftarten.

Nachteile:

  • Eingeschränkte Unterstützung für komplexe Layouts (z. B. keine vorgefertigten Lösungen für komplexe Tabellen).
  • Manuelle Positionierung der Elemente – geeignet für einfache Dokumente.


2. UniPDF – professionelle Lösung für komplexe Aufgaben



UniPDF (von github.com/unidoc/unipdf/v3) ist eine leistungsstarke kommerzielle Bibliothek, die nahezu vollständige Kontrolle über PDFs bietet. Sie unterstützt das Erstellen, Bearbeiten, Konvertieren und Extrahieren von Daten aus PDFs. Für Bildungs- und Non-Profit-Projekte gibt es eine kostenlose Version mit Einschränkungen.



Beispiel für die Erstellung eines Berichts mit Tabelle:



package main

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

func main() { // Lizenz angeben (kostenlos zum Testen) license.SetMeteredKey("Ihr_Schlüssel") c := creator.New() c.NewPage() // Überschrift chapter := c.NewChapter("Monatsbericht") chapter.Add(c.NewParagraph("Verkaufsdaten")) // Tabelle table := c.NewTable(3) table.SetColumnWidths(100, 100, 100) headers := []string{"Produkt", "Menge", "Betrag"} for _, h := range headers { cell := table.NewCell() cell.SetBackgroundColor(creator.Col

Empfehlungen