PDF-Generierung auf Rust: Überblick über Bibliotheken und Codebeispiele

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 Rust: Überblick über Bibliotheken und praktische Beispiele



Rust ist eine Systemprogrammiersprache, die zunehmend für die Erstellung leistungsstarker Serveranwendungen, Webdienste und Kommandozeilentools verwendet wird. Eine häufige Aufgabe bei der Entwicklung solcher Projekte ist die Generierung von PDF-Dokumenten: Berichte, Rechnungen, Zertifikate oder einfach formatierte Textdateien. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für die Arbeit mit PDF in Rust, ihre Funktionen, Codebeispiele und Auswahlkriterien.



Beliebte Bibliotheken zur PDF-Generierung auf Rust



Derzeit lassen sich im Rust-Ökosystem drei Hauptbibliotheken identifizieren, die aktiv unterstützt und von der Community genutzt werden:



  • printpdf — eine Low-Level-Bibliothek zur Erstellung von PDF-Dokumenten mit vollständiger Kontrolle über den Inhalt. Unterstützt Text, Bilder, Vektorgrafiken, Tabellen und die Einbettung von Schriftarten.
  • genpdf — eine höherwertige Bibliothek, die auf printpdf aufbaut. Bietet praktische Abstraktionen für die Arbeit mit Text, Absätzen, Tabellen und Stilen.
  • pdf_writer — eine weitere Low-Level-Bibliothek, die sich auf Minimalismus und Leistung konzentriert. Ermöglicht das direkte Schreiben von PDF-Dateien, erfordert jedoch ein tiefes Verständnis des PDF-Formats.


Die Bibliothek printpdf



printpdf ist eine der beliebtesten Bibliotheken zur PDF-Generierung auf Rust. Sie bietet eine API für die Arbeit mit grafischen Primitiven, Text und Schriftarten. Hauptfunktionen:

  • Erstellung mehrseitiger Dokumente;
  • Einbettung von TrueType/OpenType-Schriftarten;
  • Zeichnen von Linien, Rechtecken, Kreisen und anderen Formen;
  • Einfügen von Bildern (PNG, JPEG);
  • Arbeit mit Farben und Transparenz;
  • Unterstützung von Unicode und Kyrillisch.


Beispiel für die Erstellung eines einfachen PDFs mit Text unter Verwendung von printpdf:



use printpdf::*;use std::fs::File;use std::io::BufWriter;

fn main() { // Dokument im A4-Format erstellen let (doc, page1, layer1) = PdfDocument::new( "Beispiel PDF auf Rust", Mm(210.0), Mm(297.0), "Layer 1", );

// Aktuelle Schriftart abrufen (eingebautes Helvetica) let font = doc.add_builtin_font(BuiltinFont::Helvetica).unwrap();

// Ebene zum Zeichnen verwenden let layer = doc.get_page(page1).get_layer(layer1);

// Text hinzufügen layer.use_text("Hallo Welt! PDF aus Rust", 24.0, Mm(50.0), Mm(250.0), &font);

// Datei speichern let file = File::create("hello.pdf").unwrap(); let writer = BufWriter::new(file); doc.save(&mut std::io::BufWriter::new(writer)).unwrap();}


Die Bibliothek genpdf



genpdf ist ein Wrapper um printpdf, der eine höherwertige API bereitstellt. Sie ist ideal für die Erstellung von Dokumenten mit einfacher Formatierung: Überschriften, Absätze, Listen, Tabellen. Hauptvorteile:

  • Automatische Verwaltung von Seitenumbrüchen;
  • Unterstützung von Stilen (fett, kursiv, unterstrichen);
  • Integrierte Unterstützung für Tabellen mit Zellen und Rahmen;
  • Einfache Schnittstelle zum Hinzufügen von Elementen.


Beispiel für die Erstellung eines PDFs mit einer Tabelle unter Verwendung von genpdf:



use genpdf::*;use genpdf::elements::*;use std::fs::File;

fn main() { // Dokument erstellen let mut doc = Document::new("Liberation Serif") .expect("Fehler beim Laden der Schriftart");

// Standardstil konfigurieren doc.set_title("Verkaufsbericht");

// Absatz hinzufügen doc.push(Paragraph::new("Verkäufe nach Monaten:"));

// Tabelle erstellen let mut table = Table::new(vec![2, 3, 2]); table.set_cell_border_style(BorderStyle::Solid); table.push_row(vec![ "Monat".to_string(), "Umsatz, Rubel".to_stri

Empfehlungen