PDF-Bibliothek für vollständige PDF-Erstellung und -Analyse aus Lyx — ohne externe Abhängigkeiten. Erzeugt Standard-konforme PDFs (PDF 1.7) mit Text, Vektorgrafiken, Rasterbildern, Annotationen, Lesezeichen, Metadaten und optionaler zlib-Kompression. Die Architektur ist modular: std.pdf ist der einzige öffentliche Einstiegspunkt; alle Untermodule werden intern genutzt.
Einsatzbereiche: Berichte, Rechnungen, Zertifikate, Dokumentationen, Präsentationen — alles was ein natives PDF-Ausgabeformat erfordert.
→ std.pdf.graphics · std.pdf.builder · std.pdf.page
┌─────────────────────────────────────────────────────────────┐
│ std.pdf (öffentliche API) │
├────────────┬────────────┬────────────┬─────────────────────┤
│ pdf.page │pdf.graphics│ pdf.meta │ pdf.annot │
│ pdf.fonts │ pdf.image │pdf.outline │ pdf.reader │
├────────────┴────────────┴────────────┴─────────────────────┤
│ pdf.builder (Cross-Reference, Trailer, Objekt-Flattening)│
├─────────────────────────────────────────────────────────────┤
│ pdf.objects (Byte-Buffer, Objekt-Nummerierung) │
│ pdf.compress (zlib/DEFLATE für Streams) │
└─────────────────────────────────────────────────────────────┘
std.pdf stellt die vollständige öffentliche API bereit. Alle anderen PDF-Units werden automatisch als Abhängigkeiten gezogen — direkter Import der Untermodule ist nicht nötig.
import std.pdf;
import std.pdf.graphics;
import std.pdf.meta;
import std.pdf.annot;
fn CreateInvoice(): void {
var doc: Pdf := PdfNew();
// Metadaten
PdfSetTitle(doc, "Rechnung 2026-001");
PdfSetAuthor(doc, "Musterfirma GmbH");
// Seite erstellen
var page: PdfPage := PdfAddPage(doc);
// Text ausgeben
PdfSetFont(page, PDF_FONT_HELVETICA_BOLD, 18);
PdfSetColor(page, 0.0, 0.2, 0.6);
PdfDrawText(page, 72.0, 750.0, "Rechnung 2026-001");
PdfSetFont(page, PDF_FONT_HELVETICA, 11);
PdfSetColor(page, 0.0, 0.0, 0.0);
PdfDrawText(page, 72.0, 720.0, "Datum: 2026-05-22");
// Linie
PdfDrawLine(page, 72.0, 710.0, 540.0, 710.0);
// Link-Annotation
PdfAddUriAnnotation(page, 72.0, 680.0, 200.0, 695.0, "https://example.com");
PdfSave(doc, "rechnung.pdf");
}
| Unit | Beschreibung |
|---|---|
| std.pdf | Öffentlicher Einstiegspunkt: PdfNew, PdfSave, PdfAddPage |
| std.pdf.objects | Primitive für PDF-Buffer: Byte-Schreiboperationen, Objekt-Nummerierung |
| std.pdf.builder | Dokument-Builder: XRef-Tabelle, Trailer, Objekt-Flattening |
| std.pdf.page | Seitenverwaltung: PdfAddPage, PdfSetLandscape, Papiergrößen |
| std.pdf.fonts | Standard-14-Schriftarten und AFM-Metriken |
| std.pdf.graphics | Content-Stream: Text, Pfade, Farben, Transformationen |
| std.pdf.compress | zlib/DEFLATE-Kompression für PDF-Streams |
| std.pdf.image | Rasterbilder: PdfAddImage, PdfDrawImage |
| std.pdf.meta | Dokument-Metadaten: Titel, Autor, Datum |
| std.pdf.annot | Annotationen: URI-Links, GoTo-Links, Text-Notizen |
| std.pdf.reader | PDF-Lesen: PdfOpen, Seitenanzahl, Metadaten |
| std.pdf.outline | Lesezeichen: PdfOutlineAdd, Hierarchie |
| std.pdf.pagelabels | Seitenbeschriftung: römisch, dezimal, alphabetisch |
| std.pdf.transition | Seitenübergänge für Präsentationen |
| std.pdf.viewprefs | Viewer-Einstellungen: Vollbild, Toolbar, Öffnungs-Action |
| std.pdf.namedest | Benannte Sprungziele für interne Links |
| std.pdf.attach | Eingebettete Dateianhänge |
| std.pdf.layer | Optional-Content-Groups (Layer) |
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
PdfNew(): Pdf | pub | Erstellt neues leeres PDF-Dokument |
PdfAddPage(doc: Pdf): PdfPage | pub | Fügt neue A4-Seite hinzu |
PdfAddPageSized(doc: Pdf, width: f64, height: f64): PdfPage | pub | Fügt Seite mit benutzerdefinierter Größe hinzu |
PdfSave(doc: Pdf, path: pchar): bool | pub | Speichert Dokument als PDF-Datei |
PdfFree(doc: Pdf): void | pub | Gibt Dokumentspeicher frei |
Letzte Aktualisierung: 2026-05-22