PDF-Erstellung in Go (Golang): Überblick über Bibliotheken und Werkzeuge
Die Erstellung von PDF-Dokumenten ist eine häufige Aufgabe in der Webentwicklung. Im Go (Golang)-Ökosystem gibt es mehrere ausgereifte Bibliotheken, die es ermöglichen, PDFs sowohl für einfache Berichte als auch für komplexe mehrseitige Dokumente mit Tabellen, Grafiken und Schriftarten zu generieren. In diesem Artikel betrachten wir die wichtigsten Werkzeuge, ihre Funktionen und geben praktische Codebeispiele.
Warum Go für die PDF-Erstellung?
Go ist eine kompilierte Sprache mit hervorragender Leistung und einem einfachen Nebenläufigkeitsmodell. Für die PDF-Erstellung bedeutet dies:
- Schnelle Verarbeitung großer Datenmengen
- Einfache Integration mit Webservern (net/http)
- Möglichkeit, die Erstellung mehrerer Dokumente zu parallelisieren
- Keine externen Abhängigkeiten (die Binärdatei enthält alles Notwendige)
Wichtige Bibliotheken für die Arbeit mit PDF in Go
1. gofpdf — einfache und beliebte Bibliothek
gofpdf ist ein Port der bekannten PHP-Bibliothek FPDF nach Go. Sie bietet eine einfache API zur Erstellung von PDFs mit grundlegenden Elementen: Text, Linien, Rechtecke, Bilder und Tabellen. Die Bibliothek benötigt keine externen Abhängigkeiten und unterstützt Unicode durch die Einbettung von Schriftarten.
Beispiel für die Erstellung eines einfachen PDFs mit 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, "Hallo, Welt!") pdf.OutputFileAndClose("hello.pdf")}Hauptfunktionen von gofpdf:
- Unterstützung von UTF-8 (erfordert Einbettung von TrueType-Schriftarten)
- Automatische Seitenumbrüche
- Vektorgrafiken (Linien, Kurven, Füllungen)
- Einbettung von Bildern (JPEG, PNG, GIF)
- Tabellen mit dynamischen Daten
2. UniPDF — leistungsstarke kommerzielle Bibliothek
UniPDF (ehemals FoxyUtils) ist eine professionelle Lösung für die Arbeit mit PDF in Go. Die Bibliothek ist Open Source, erfordert jedoch eine Lizenz für die kommerzielle Nutzung. UniPDF unterstützt nicht nur die Erstellung, sondern auch die Bearbeitung, Konvertierung und Extraktion von Daten aus PDFs.
Beispiel für die Erstellung eines PDFs mit UniPDF:
package main
import ( "os" "github.com/unidoc/unipdf/v3/creator")
func main() { c := creator.New() c.NewPage() // Text hinzufügen text := c.NewStyledParagraph() text.Append("Beispieldokument UniPDF") text.SetFontSize(18) c.Draw(text) // Speichern c.WriteToFile("unipdf_example.pdf")}Einzigartige Funktionen von UniPDF:
- Vollständiges Parsen und Bearbeiten vorhandener PDFs
- Unterstützung von Formularen, Anmerkungen und Lesezeichen
- Konvertierung von HTML in PDF
- Arbeit mit digitalen Signaturen
- Extraktion von Text und Bildern
3. Maroto — PDF-Generator basierend auf visuellen Komponenten
Maroto baut auf gofpdf auf und bietet einen höherwertigen Ansatz unter Verwendung des Konzepts eines "Rasters" (grid). Dies ist praktisch für die Erstellung von Berichten, Rechnungen und anderen strukturierten Dokumenten.
Beispiel mit 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("Rechnung Nr. 123", props.Text{ Style: fontstyle.Bold, Align: align.Center, }) }) }) document, err := m.Generate() if err != nil { Auch in der Bibliothek
Arbeiten mit CSV in PHP: Die Bibliothek SplFileObject und integrierte Funktionen
msw TypeScript: Komplettanleitung mit Beispielen
Micrometer Java: Vollständige Anleitung mit Beispielen
Elasticsearch-Client für Java: Vollständige Anleitung zur Verbindung und Arbeit