====== 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