Aller au contenu

Recettes PHP

Voici l’index des recettes PHP natives de NextPDF — des pages exécutables, centrées sur une tâche, écrites directement avec l’API PHP du cœur. Le dépôt principal nextpdf est la source d’autorité et vérifie chaque recette sous docs/public/cookbook/php/. Chacune s’appuie sur un script examples/*.php et un harnais de test tests/Cookbook/Php/. L’agrégateur importe ensuite chaque page dans ce site, avec sa provenance source.

Comme cette page est un index, elle ne fait aucune affirmation comportementale sur quelque recette que ce soit. Chaque ligne indique l’intention de la recette, le module du cœur qu’elle utilise et son profil de reproductibilité déclaré. Le profil et toute affirmation de conformité se trouvent sur la page de recette elle-même, et proviennent du front-matter de cette page ainsi que de son test intégré au dépôt — pas d’ici. Pour le livre de recettes d’intégration (framework / moteur de rendu / service), voir Livre de recettes d’intégration. Pour le contrat que suit chaque recette exécutable, voir Conventions de recette.

Chaque [[…]] ci-dessous est une référence anticipée vers une page rédigée dans le dépôt principal sous docs/public/cookbook/php/, puis importée dans ce site par l’agrégateur. Le slug suit une seule convention : un segment unique.

/cookbook/php/<recipe>/

<recipe> nomme l’intention de la recette en kebab-case (par exemple render-html-to-pdf, et non le nom de module html). Il est en minuscules, séparé par des traits d’union, sans numéros de version, et se termine par une seule barre oblique finale. Tant qu’une page cible n’est pas agrégée, son lien reste un espace réservé et ne se résout pas. Une recette qui n’a pas encore d’exemple exécutable (la liste des manques ci-dessous) ne peut pas être publiée tant que son exemple et son harnais de test n’existent pas, même si le lien pointe déjà vers le slug à venir.

Chaque recette déclare le profil le plus strict qu’elle peut honnêtement satisfaire :

  • bitwise — identique octet pour octet d’une exécution à l’autre (contenu déterministe simple, toute l’entropie figée).
  • structural — identique après normalisation des atomes volatils (le /ID du trailer, les dates de création/modification, les préfixes de sous-ensemble de police — en pratique, chaque PDF multi-objets).
  • semantic — équivalence de l’AST structurel et des métadonnées uniquement (sortie signée ou horodatée, ou sortie dont l’équivalence est intrinsèquement instable au niveau de l’octet).

Le profil est une propriété que la page de recette prouve avec son test de harnais. Cet index ne fait que rapporter la valeur que la page déclare.

Le dépôt principal détient déjà ces cinq recettes et les fusionne aujourd’hui — l’ensemble de la Wave 8.

RecetteCe qu’elle faitModuleProfil
sign-pades (prévue en amont)Appliquer une signature de base CMS/PAdES avec une clé logicielleSécuritésemantic
encrypt-aes256 (prévue en amont)Chiffrer en AES-256 et définir les indicateurs de permissionSécuritéstructural
pdfa4-conformance-gate (prévue en amont)Produire une sortie PDF/A-4 et appliquer un filtre via un validateur externeConformitésemantic
accessible-pdfua2-from-html (prévue en amont)Émettre la structure balisée pour la création de PDF/UA-2 accessiblesAccessibilitésemantic
validate-signature (prévue en amont)Inspecter si un PDF porte une signature, et la frontière de confianceInspectionsemantic

Construire, paginer et styliser un document.

RecetteCe qu’elle faitModuleProfil
render-html-to-pdf (prévue en amont)Rendre un document HTML en PDFHtmlstructural
style-with-css (prévue en amont)Appliquer du CSS à un rendu HTMLHtmlstructural
html-table-layout (prévue en amont)Mettre en page un tableau HTMLHtmlstructural
paginate-long-html (prévue en amont)Paginer un long document HTMLHtmlstructural
compose-text-and-fonts (prévue en amont)Composer du texte avec un contrôle typographiqueTypographystructural
embed-and-subset-fonts (prévue en amont)Intégrer et sous-ensembler des policesFontstructural
cjk-vertical-writing (prévue en amont)Composer du texte CJK en mode d’écriture verticalTypographystructural
multi-page-document (prévue en amont)Construire un document multi-pagesDocumentstructural
headers-and-footers (prévue en amont)Ajouter des en-têtes et pieds de page courantsLayoutstructural

Vecteurs, images, calques et espace de coordonnées.

RecetteCe qu’elle faitModuleProfil
draw-vector-graphics (prévue en amont)Dessiner des graphiques vectorielsGraphicsstructural
gradients-and-transparency (prévue en amont)Appliquer des dégradés et de la transparenceGraphicsstructural
embed-images (prévue en amont)Intégrer des images matriciellesContentstructural
optional-content-layers (prévue en amont)Utiliser du contenu optionnel (calques)Graphicsstructural
transform-coordinate-space (prévue en amont)Transformer l’espace de coordonnéesGraphicsstructural

Signets, liens, annotations et champs AcroForm.

RecetteCe qu’elle faitModuleProfil
bookmarks-and-toc (prévue en amont)Construire des signets et une table des matièresNavigationstructural
links-and-annotations (prévue en amont)Ajouter des liens et des annotationsNavigationstructural
generate-barcodes (prévue en amont)Générer des codes-barresBarcodebitwise
fill-pdf-form (prévue en amont)Remplir un AcroFormFormstructural
flatten-form-fields (prévue en amont)Aplatir les champs de formulaireFormstructural

Définir les métadonnées et le comportement de la visionneuse.

RecetteCe qu’elle faitModuleProfil
set-document-metadata (prévue en amont)Définir les métadonnées du documentMetadatastructural
set-viewer-preferences (prévue en amont)Définir les préférences de la visionneuseDocumentstructural

Chiffrement, signature, accessibilité et sortie profilée. Ces recettes explicitent, sur leur page, les frontières support≠conformité et présence≠validité.

RecetteCe qu’elle faitModuleProfil
encrypt-with-permissions (prévue en amont)Chiffrer avec des indicateurs de permissionSécuritéstructural
sign-pades-b-b (prévue en amont)Appliquer une signature PAdES (B-B et B-T)Sécuritésemantic
inspect-existing-signature (prévue en amont)Inspecter une signature existanteInspectionsemantic
tagged-pdf-ua2 (prévue en amont)Émettre la structure balisée pour PDF/UA-2Accessibilitésemantic
pdf-a-4-output (prévue en amont)Produire une sortie PDF/A-4Conformitésemantic
validate-conformance (prévue en amont)Valider par rapport à un profil de conformitéCompliancesemantic

Inspecter le contenu et la structure d’un PDF.

RecetteCe qu’elle faitModuleProfil
extract-text-content (prévue en amont)Extraire le contenu textuelTextsemantic
parse-and-inspect-pdf (prévue en amont)Analyser et inspecter un PDFInspectionsemantic
inspect-layout-boxes (prévue en amont)Inspecter les boîtes de mise en pageInspectionsemantic

Des motifs communs à plusieurs modules.

RecetteCe qu’elle faitCouvreProfil
worker-safe-batch-rendering (prévue en amont)Faire le rendu en toute sécurité dans un worker de longue durée (registres partagés, mémoire bornée)Core · Performance · Supportsemantic
exception-aware-error-handling (prévue en amont)Gérer les erreurs avec la hiérarchie d’exceptions de NextPDFException · Contractsstructural
observe-with-opentelemetry (prévue en amont)Observer le rendu avec OpenTelemetryObservability · Telemetry · Eventsemantic

Ces recettes ont besoin d’un nouveau examples/*.php ainsi que d’un harnais tests/Cookbook/Php/ dans le dépôt principal avant de pouvoir être publiées. Le slug ci-dessus est définitif. La page reste un espace réservé jusqu’à ce que l’exemple soit disponible et que son test s’exécute :

  • sign-pades-b-b (prévue en amont) (couvre PAdES B-B et B-T)
  • inspect-existing-signature (prévue en amont)
  • extract-text-content (prévue en amont)
  • parse-and-inspect-pdf (prévue en amont)
  • validate-conformance (prévue en amont)
  • inspect-layout-boxes (prévue en amont)
  • worker-safe-batch-rendering (prévue en amont) (l’exemple existe ; nouveau test de harnais mémoire/GC ajouté)
  • observe-with-opentelemetry (prévue en amont) (nouvel exemple PHP natif ajouté)

Toutes les autres recettes ci-dessus disposent déjà d’un examples/*.php de référence et n’ont plus besoin que d’un harnais d’emballage. Cet index consigne le slug et la page à venir. Il ne prétend pas qu’une page en attente soit déjà complète.