====== 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. → [[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 ===== Ü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 ^ | [[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:compress|std.pdf.compress]] | zlib/DEFLATE-Kompression für PDF-Streams (intern genutzt) | ==== Seiten & Inhalt ==== ^ Unit ^ Beschreibung ^ | [[lyx_-_programmiersprache:units:pdf:page|std.pdf.page]] | Seitenverwaltung: ''PdfAddPage'', ''PdfSetLandscape'', Seitengrößen (A4, Letter, …) | | [[lyx_-_programmiersprache:units:pdf:graphics|std.pdf.graphics]] | Content-Stream: Text ausgeben, Pfade zeichnen, Farben setzen, Transformationen, Clipping | | [[lyx_-_programmiersprache:units:pdf:image|std.pdf.image]] | Rasterbilder: ''PdfAddImage'' (JPEG/RGB), ''PdfDrawImage'' mit Positionierung | | [[lyx_-_programmiersprache:units:pdf:xobject|std.pdf.xobject]] | Form-XObjects: einmal zeichnen, beliebig oft auf beliebigen Seiten platzieren | ==== Schriften ==== Funktionen für Schriftart-Verwaltung: ^ Unit ^ Beschreibung ^ | [[lyx_-_programmiersprache:units:pdf:fonts|std.pdf.fonts]] | Standard-14-Schriftarten (Helvetica, Times, Courier, …) und AFM-Metrik-Tabellen | | [[lyx_-_programmiersprache:units:pdf:ttfont|std.pdf.ttfont]] | TrueType-Schriften einbetten mit automatischem Unicode-Subsetting (Type0/CIDFontType2, UTF-8-Text) | ==== Farbe ==== ^ Unit ^ Beschreibung ^ | [[lyx_-_programmiersprache:units:pdf:shading|std.pdf.shading]] | Farbverläufe: lineare (axiale) und radiale Gradient-Füllungen | | [[lyx_-_programmiersprache:units:pdf:spot|std.pdf.spot]] | Sonderfarben (Separation-Farbraum): PANTONE und andere benannte Farben mit CMYK-Alternativwert | ==== Metadaten & Konformität ==== ^ Unit ^ Beschreibung ^ | [[lyx_-_programmiersprache:units:pdf:meta|std.pdf.meta]] | Dokument-Metadaten: Titel, Autor, Thema, Schlüsselwörter, Erstellungsdatum | | [[lyx_-_programmiersprache:units:pdf:xmp|std.pdf.xmp]] | XMP-Metadaten-Stream im PDF-Katalog: ''PdfSetXMP'', ''PdfGenerateXMP'' | | [[lyx_-_programmiersprache:units:pdf:pdfa|std.pdf.pdfa]] | PDF/A-Konformität (A-1b/A-2b/A-3b): OutputIntent, sRGB-ICC-Profil, ''pdfaid''-XMP-Namespace | ==== Navigation & Interaktivität ==== ^ Unit ^ Beschreibung ^ | [[lyx_-_programmiersprache:units:pdf:annot|std.pdf.annot]] | Annotationen: URI-Links, GoTo-Links, Text-Notizen | | [[lyx_-_programmiersprache:units:pdf:forms|std.pdf.forms]] | AcroForms: interaktive Felder — Text, Checkbox, Radio-Button, ComboBox; ''PdfFlattenForms'' | | [[lyx_-_programmiersprache:units:pdf:outline|std.pdf.outline]] | Outlines (Lesezeichen): ''PdfOutlineAdd'', verschachtelte Hierarchie | | [[lyx_-_programmiersprache:units:pdf:namedest|std.pdf.namedest]] | Benannte Sprungziele für interne Links und Outline-Verweise | | [[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 (Dissolve, Wipe, Push, Split) | | [[lyx_-_programmiersprache:units:pdf:viewprefs|std.pdf.viewprefs]] | Viewer-Einstellungen: Toolbar, Vollbild, Öffnungs-Action | ==== Sonstiges ==== Weitere Hilfsfunktionen: ^ Unit ^ Beschreibung ^ | [[lyx_-_programmiersprache:units:pdf:reader|std.pdf.reader]] | PDF-Lesen: ''PdfOpen'', Seitenanzahl, Metadaten-Extraktion | | [[lyx_-_programmiersprache:units:pdf:attach|std.pdf.attach]] | Eingebettete Dateianhänge: ''PdfAttachFile'' (Pflicht für PDF/A-3b) | | [[lyx_-_programmiersprache:units:pdf:layer|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