====== 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, 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.
→ [[lyx_-_programmiersprache:units:pdf:graphics|std.pdf.graphics]] · [[lyx_-_programmiersprache:units:pdf:builder|std.pdf.builder]] · [[lyx_-_programmiersprache:units:pdf:page|std.pdf.page]]
----
===== Architektur =====
┌─────────────────────────────────────────────────────────────┐
│ 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) │
└─────────────────────────────────────────────────────────────┘
----
===== 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 =====
^ Unit ^ Beschreibung ^
| [[lyx_-_programmiersprache:units:pdf|std.pdf]] | Öffentlicher Einstiegspunkt: ''PdfNew'', ''PdfSave'', ''PdfAddPage'' |
| [[lyx_-_programmiersprache:units:pdf:objects|std.pdf.objects]] | Primitive für PDF-Buffer: Byte-Schreiboperationen, Objekt-Nummerierung |
| [[lyx_-_programmiersprache:units:pdf:builder|std.pdf.builder]] | Dokument-Builder: XRef-Tabelle, Trailer, Objekt-Flattening |
| [[lyx_-_programmiersprache:units:pdf:page|std.pdf.page]] | Seitenverwaltung: ''PdfAddPage'', ''PdfSetLandscape'', Papiergrößen |
| [[lyx_-_programmiersprache:units:pdf:fonts|std.pdf.fonts]] | Standard-14-Schriftarten und AFM-Metriken |
| [[lyx_-_programmiersprache:units:pdf:graphics|std.pdf.graphics]] | Content-Stream: Text, Pfade, Farben, Transformationen |
| [[lyx_-_programmiersprache:units:pdf:compress|std.pdf.compress]] | zlib/DEFLATE-Kompression für PDF-Streams |
| [[lyx_-_programmiersprache:units:pdf:image|std.pdf.image]] | Rasterbilder: ''PdfAddImage'', ''PdfDrawImage'' |
| [[lyx_-_programmiersprache:units:pdf:meta|std.pdf.meta]] | Dokument-Metadaten: Titel, Autor, Datum |
| [[lyx_-_programmiersprache:units:pdf:annot|std.pdf.annot]] | Annotationen: URI-Links, GoTo-Links, Text-Notizen |
| [[lyx_-_programmiersprache:units:pdf:reader|std.pdf.reader]] | PDF-Lesen: ''PdfOpen'', Seitenanzahl, Metadaten |
| [[lyx_-_programmiersprache:units:pdf:outline|std.pdf.outline]] | Lesezeichen: ''PdfOutlineAdd'', Hierarchie |
| [[lyx_-_programmiersprache:units:pdf:pagelabels|std.pdf.pagelabels]] | Seitenbeschriftung: römisch, dezimal, alphabetisch |
| [[lyx_-_programmiersprache:units:pdf:transition|std.pdf.transition]] | Seitenübergänge für Präsentationen |
| [[lyx_-_programmiersprache:units:pdf:viewprefs|std.pdf.viewprefs]] | Viewer-Einstellungen: Vollbild, Toolbar, Öffnungs-Action |
| [[lyx_-_programmiersprache:units:pdf:namedest|std.pdf.namedest]] | Benannte Sprungziele für interne Links |
| [[lyx_-_programmiersprache:units:pdf:attach|std.pdf.attach]] | Eingebettete Dateianhänge |
| [[lyx_-_programmiersprache:units:pdf:layer|std.pdf.layer]] | Optional-Content-Groups (Layer) |
----
===== 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-05-22