Zum Inhalt springen

PHP-Kochbuch

Dies ist das Verzeichnis für PHP-native NextPDF-Rezepte — aufgabenorientierte, ausführbare Seiten, die direkt für die Core-PHP-API geschrieben sind. Das nextpdf-Core-Repository verantwortet und verifiziert jedes Rezept unter docs/public/cookbook/php/. Jedes Rezept wird durch ein examples/*.php-Skript und einen tests/Cookbook/Php/-Harness-Test abgesichert. Der Aggregator übernimmt dann jede Seite in diese Site und führt ihre Quellherkunft mit.

Da diese Seite ein Verzeichnis ist, macht sie keine Verhaltensaussage über einzelne Rezepte. Jede Zeile nennt den Zweck des Rezepts, das Core-Modul, das es nutzt, und sein deklariertes Reproduzierbarkeitsprofil. Das Profil und jede Konformitätsaussage stehen auf der Rezeptseite selbst, gespeist aus dem Front-Matter der jeweiligen Seite und ihrem Test im Repository — nicht hier. Das Integrations-Kochbuch für Framework, Renderer und Dienst finden Sie unter Integrations-Kochbuch. Den Vertrag, dem jedes ausführbare Rezept folgt, finden Sie unter Rezeptkonventionen.

Jedes [[…]] unten ist eine Vorwärtsreferenz auf eine Seite, die im Core-Repository unter docs/public/cookbook/php/ verfasst und anschließend vom Aggregator in diese Site übernommen wird. Der Slug folgt der Konvention eines einzelnen Segments.

/cookbook/php/<recipe>/

<recipe> bezeichnet den Zweck des Rezepts in Kebab-Case (zum Beispiel render-html-to-pdf, nicht den Modulnamen html). Er ist durchgängig kleingeschrieben, durch Bindestriche getrennt, frei von Versionsnummern und endet auf einem einzigen abschließenden Schrägstrich. Bis eine Zielseite aggregiert ist, bleibt ihr Link ein Platzhalter und wird nicht aufgelöst. Ein Rezept ohne ausführbares Beispiel (die Lückenliste unten) kann nicht veröffentlicht werden, bis sein Beispiel und sein Harness-Test existieren, auch wenn der Link bereits auf den künftigen Slug zeigt.

Jedes Rezept deklariert das strengste Profil, das es ehrlich erfüllen kann:

  • bitweise — byte-identisch über alle Durchläufe hinweg (rein deterministischer Inhalt, jede Entropie fixiert).
  • strukturell — identisch nach Normalisierung flüchtiger Atome (das Trailer-/ID, creation/modification-Daten, Font-Subset-Präfixe — in der Praxis jedes PDF mit mehreren Objekten).
  • semantisch — nur Äquivalenz des Struktur-AST plus Metadaten (signierte oder mit Zeitstempel versehene Ausgabe oder Ausgabe, deren Äquivalenz von Natur aus nicht byte-stabil ist).

Das Profil ist eine Eigenschaft, die die Rezeptseite durch ihren Harness-Test belegt. Dieses Verzeichnis meldet nur den Wert, den die Seite deklariert.

Im Core-Repository liegen diese fünf Rezepte bereits heute vor und sind zusammengeführt — der Wave-8-Satz.

RezeptWas es tutModulProfil
sign-pades (geplant im Upstream)Eine CMS/PAdES-Baseline-Signatur mit einem Softwareschlüssel anwendenSecuritysemantisch
encrypt-aes256 (geplant im Upstream)Mit AES-256 verschlüsseln und Berechtigungsflags setzenSecuritystrukturell
pdfa4-conformance-gate (geplant im Upstream)PDF/A-4-Ausgabe erzeugen und mit einem externen Validator absichernConformancesemantisch
accessible-pdfua2-from-html (geplant im Upstream)Die getaggte Struktur für barrierefreies PDF/UA-2-Authoring ausgebenAccessibilitysemantisch
validate-signature (geplant im Upstream)Prüfen, ob ein PDF eine Signatur enthält, und die Vertrauensgrenze prüfenInspectsemantisch

Ein Dokument aufbauen, paginieren und gestalten.

RezeptWas es tutModulProfil
render-html-to-pdf (geplant im Upstream)Ein HTML-Dokument in PDF rendernHtmlstrukturell
style-with-css (geplant im Upstream)CSS auf ein HTML-Rendering anwendenHtmlstrukturell
html-table-layout (geplant im Upstream)Eine HTML-Tabelle layoutenHtmlstrukturell
paginate-long-html (geplant im Upstream)Ein langes HTML-Dokument paginierenHtmlstrukturell
compose-text-and-fonts (geplant im Upstream)Text mit Typografie-Kontrolle setzenTypographystrukturell
embed-and-subset-fonts (geplant im Upstream)Schriften einbetten und subsettenFontstrukturell
cjk-vertical-writing (geplant im Upstream)CJK-Text im vertikalen Schreibmodus setzenTypographystrukturell
multi-page-document (geplant im Upstream)Ein mehrseitiges Dokument aufbauenDocumentstrukturell
headers-and-footers (geplant im Upstream)Laufende Kopf- und Fußzeilen hinzufügenLayoutstrukturell

Vektoren, Bilder, Ebenen und Koordinatenraum.

RezeptWas es tutModulProfil
draw-vector-graphics (geplant im Upstream)Vektorgrafiken zeichnenGraphicsstrukturell
gradients-and-transparency (geplant im Upstream)Verläufe und Transparenz anwendenGraphicsstrukturell
embed-images (geplant im Upstream)Rasterbilder einbettenContentstrukturell
optional-content-layers (geplant im Upstream)Optionalen Inhalt (Ebenen) verwendenGraphicsstrukturell
transform-coordinate-space (geplant im Upstream)Den Koordinatenraum transformierenGraphicsstrukturell

Lesezeichen, Links, Anmerkungen und AcroForm-Felder.

RezeptWas es tutModulProfil
bookmarks-and-toc (geplant im Upstream)Lesezeichen und ein Inhaltsverzeichnis aufbauenNavigationstrukturell
links-and-annotations (geplant im Upstream)Links und Anmerkungen hinzufügenNavigationstrukturell
generate-barcodes (geplant im Upstream)Barcodes generierenBarcodebitweise
fill-pdf-form (geplant im Upstream)Ein AcroForm ausfüllenFormstrukturell
flatten-form-fields (geplant im Upstream)Formularfelder abflachenFormstrukturell

Metadaten und Viewer-Verhalten festlegen.

RezeptWas es tutModulProfil
set-document-metadata (geplant im Upstream)Dokumentmetadaten festlegenMetadatastrukturell
set-viewer-preferences (geplant im Upstream)Viewer-Einstellungen festlegenDocumentstrukturell

Verschlüsselung, Signierung, Barrierefreiheit und Profilausgabe. Diese Rezepte machen die Grenzen Unterstützung≠Konformität und Vorhandensein≠Gültigkeit auf der jeweiligen Rezeptseite deutlich.

RezeptWas es tutModulProfil
encrypt-with-permissions (geplant im Upstream)Mit Berechtigungsflags verschlüsselnSecuritystrukturell
sign-pades-b-b (geplant im Upstream)Eine PAdES-Signatur anwenden (B-B und B-T)Securitysemantisch
inspect-existing-signature (geplant im Upstream)Eine vorhandene Signatur prüfenInspectsemantisch
tagged-pdf-ua2 (geplant im Upstream)Getaggte Struktur für PDF/UA-2 ausgebenAccessibilitysemantisch
pdf-a-4-output (geplant im Upstream)PDF/A-4-Ausgabe erzeugenConformancesemantisch
validate-conformance (geplant im Upstream)Gegen ein Konformitätsprofil validierenCompliancesemantisch

Inhalt und Struktur aus einem PDF auslesen.

RezeptWas es tutModulProfil
extract-text-content (geplant im Upstream)Textinhalt extrahierenTextsemantisch
parse-and-inspect-pdf (geplant im Upstream)Ein PDF parsen und inspizierenInspectsemantisch
inspect-layout-boxes (geplant im Upstream)Layout-Boxen inspizierenInspectsemantisch

Muster, die sich über mehrere Module erstrecken.

RezeptWas es tutUmfasstProfil
worker-safe-batch-rendering (geplant im Upstream)Sicher in einem langlaufenden Worker rendern (gemeinsame Registries, begrenzter Speicher)Core · Performance · Supportsemantisch
exception-aware-error-handling (geplant im Upstream)Fehler mit der NextPDF-Ausnahmehierarchie behandelnException · Contractsstrukturell
observe-with-opentelemetry (geplant im Upstream)Rendering mit OpenTelemetry beobachtenObservability · Telemetry · Eventsemantisch

Rezepte, die noch auf ein ausführbares Beispiel warten

Abschnitt betitelt „Rezepte, die noch auf ein ausführbares Beispiel warten“

Diese Rezepte brauchen ein vollständig neues examples/*.php sowie einen tests/Cookbook/Php/-Harness im Core-Repository, bevor sie veröffentlicht werden können. Der Slug oben ist endgültig. Die Seite bleibt ein Platzhalter, bis das Beispiel vorhanden ist und sein Test läuft:

  • sign-pades-b-b (geplant im Upstream) (deckt PAdES B-B und B-T ab)
  • inspect-existing-signature (geplant im Upstream)
  • extract-text-content (geplant im Upstream)
  • parse-and-inspect-pdf (geplant im Upstream)
  • validate-conformance (geplant im Upstream)
  • inspect-layout-boxes (geplant im Upstream)
  • worker-safe-batch-rendering (geplant im Upstream) (Beispiel existiert; neuer Memory-/GC-Harness-Test hinzugefügt)
  • observe-with-opentelemetry (geplant im Upstream) (neues PHP-natives Beispiel hinzugefügt)

Alle anderen oben aufgeführten Rezepte haben bereits ein unterstützendes examples/*.php und brauchen nur einen Harness-Wrapper. Dieses Verzeichnis nennt den Slug und die künftige Seite. Es behauptet nicht, dass eine ausstehende Seite bereits fertig ist.