std.pdf

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, TrueType-Schriften, Farbverläufen, Sonderfarben, Annotationen, Formularen, Lesezeichen, Metadaten, XMP-Streams und optionaler zlib-Kompression. Für Langzeitarchivierung: PDF/A-1b, -2b, -3b.

Einsatzbereiche: Berichte, Rechnungen, Zertifikate, Dokumentationen, Präsentationen, ZUGFeRD/Factur-X-Rechnungen, formularbasierte Dokumente.

std.pdf.graphics · std.pdf.builder · std.pdf.page


Architektur

Übersicht der internen Schichten und Abhängigkeiten:

┌──────────────────────────────────────────────────────────────────┐
│  std.pdf  (öffentliche API)                                      │
├──────────────┬──────────────┬──────────────┬─────────────────────┤
│ Seiten       │ Schriften     │ Farbe        │ Interaktiv          │
│ pdf.page     │ pdf.fonts     │ pdf.shading  │ pdf.annot           │
│ pdf.graphics │ pdf.ttfont    │ pdf.spot     │ pdf.forms           │
│ pdf.image    │               │              │ pdf.outline         │
│ pdf.xobject  │               │              │ pdf.namedest        │
├──────────────┴──────────────┴──────────────┴─────────────────────┤
│ Metadaten & Konformität                                          │
│ pdf.meta · pdf.xmp · pdf.pdfa · pdf.attach · pdf.layer          │
│ pdf.pagelabels · pdf.transition · pdf.viewprefs · pdf.reader     │
├──────────────────────────────────────────────────────────────────┤
│  pdf.builder  (XRef-Tabelle, Trailer, Objekt-Flattening)        │
├──────────────────────────────────────────────────────────────────┤
│  pdf.objects  (Byte-Buffer, Objekt-Nummerierung)                 │
│  pdf.compress (zlib/DEFLATE für Streams)                         │
└──────────────────────────────────────────────────────────────────┘


Einstieg: std.pdf

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");
}


Units im Überblick

Alle PDF-Units gruppiert nach Aufgabenbereich:

Kern-Infrastruktur

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.compress zlib/DEFLATE-Kompression für PDF-Streams (intern genutzt)

Seiten & Inhalt

Unit Beschreibung
std.pdf.page Seitenverwaltung: PdfAddPage, PdfSetLandscape, Seitengrößen (A4, Letter, …)
std.pdf.graphics Content-Stream: Text ausgeben, Pfade zeichnen, Farben setzen, Transformationen, Clipping
std.pdf.image Rasterbilder: PdfAddImage (JPEG/RGB), PdfDrawImage mit Positionierung
std.pdf.xobject Form-XObjects: einmal zeichnen, beliebig oft auf beliebigen Seiten platzieren

Schriften

Funktionen für Schriftart-Verwaltung:

Unit Beschreibung
std.pdf.fonts Standard-14-Schriftarten (Helvetica, Times, Courier, …) und AFM-Metrik-Tabellen
std.pdf.ttfont TrueType-Schriften einbetten mit automatischem Unicode-Subsetting (Type0/CIDFontType2, UTF-8-Text)

Farbe

Unit Beschreibung
std.pdf.shading Farbverläufe: lineare (axiale) und radiale Gradient-Füllungen
std.pdf.spot Sonderfarben (Separation-Farbraum): PANTONE und andere benannte Farben mit CMYK-Alternativwert

Metadaten & Konformität

Unit Beschreibung
std.pdf.meta Dokument-Metadaten: Titel, Autor, Thema, Schlüsselwörter, Erstellungsdatum
std.pdf.xmp XMP-Metadaten-Stream im PDF-Katalog: PdfSetXMP, PdfGenerateXMP
std.pdf.pdfa PDF/A-Konformität (A-1b/A-2b/A-3b): OutputIntent, sRGB-ICC-Profil, pdfaid-XMP-Namespace
Unit Beschreibung
std.pdf.annot Annotationen: URI-Links, GoTo-Links, Text-Notizen
std.pdf.forms AcroForms: interaktive Felder — Text, Checkbox, Radio-Button, ComboBox; PdfFlattenForms
std.pdf.outline Outlines (Lesezeichen): PdfOutlineAdd, verschachtelte Hierarchie
std.pdf.namedest Benannte Sprungziele für interne Links und Outline-Verweise
std.pdf.pagelabels Seitenbeschriftung: römisch, dezimal, alphabetisch
std.pdf.transition Seitenübergänge für Präsentationen (Dissolve, Wipe, Push, Split)
std.pdf.viewprefs Viewer-Einstellungen: Toolbar, Vollbild, Öffnungs-Action

Sonstiges

Weitere Hilfsfunktionen:

Unit Beschreibung
std.pdf.reader PDF-Lesen: PdfOpen, Seitenanzahl, Metadaten-Extraktion
std.pdf.attach Eingebettete Dateianhänge: PdfAttachFile (Pflicht für PDF/A-3b)
std.pdf.layer Optional-Content-Groups (Layer/OCG): sicht- und ausblendbare Ebenen

Funktionen (std.pdf)

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-06-05