跳到內容

PHP 食譜

這是 PHP 原生 NextPDF 食譜的索引——這些頁面以任務為中心且可執行,直接針對核心 PHP API 撰寫。nextpdf 核心儲存庫擁有並驗證 docs/public/cookbook/php/ 之下的每一道食譜。每一道食譜都由一支 examples/*.php 指令稿與一個 tests/Cookbook/Php/ 測試框架背書。接著,匯整器會將每個頁面拉進本網站,並一併帶入其來源出處。

由於本頁是一份索引,它不對任何食譜做行為宣稱。每一列都記錄該食譜的意圖、它所操作的核心模組,以及它宣告的可重現性設定檔。設定檔與任何符合性宣稱都存在於食譜頁面本身,來源是該頁面的前置資料與其儲存庫內測試——而非本頁。關於整合(框架/轉譯器/服務)食譜,請參閱 整合食譜。關於每一道可執行食譜都遵循的契約,請參閱 食譜慣例

以下每一個 [[…]] 都是前向參照,指向在核心儲存庫 docs/public/cookbook/php/ 之下撰寫、隨後由匯整器拉進本網站的頁面。其 slug 遵循單一慣例:單一區段。

/cookbook/php/<recipe>/

<recipe> 以 kebab-case 命名食譜的意圖(例如 render-html-to-pdf,而非模組名稱 html)。它是小寫、以連字號分隔、不含版本號,並以單一結尾斜線收尾。在目標頁面匯整之前,其連結只是一個佔位符,並不會解析。尚無可執行範例的食譜(下方的缺口清單)在其範例與測試框架存在之前無法發佈,即使該連結已經指向最終的 slug。

每一道食譜都宣告它能如實滿足的最嚴格設定檔:

  • bitwise——跨多次執行皆為位元組相同(純粹決定性的內容,所有熵都已固定)。
  • structural——在正規化易變原子(trailer 的 /ID、creation/modification 日期、字型子集前綴——實務上每一份多物件 PDF 都會如此)之後皆相同。
  • semantic——僅要求結構性 AST 與中繼資料等價(已簽署或已加蓋時戳的輸出,或等價性本質上無法達到位元組穩定的輸出)。

設定檔是食譜頁面透過其測試框架證明的一項屬性。本索引僅回報該頁面宣告的值。

核心儲存庫目前已收錄並合併這五道食譜——也就是 Wave 8 集合。

食譜它的作用模組設定檔
sign-pades(規劃於上游)以軟體金鑰套用 CMS/PAdES 基線簽章安全性semantic
encrypt-aes256(規劃於上游)以 AES-256 加密並設定權限旗標安全性structural
pdfa4-conformance-gate(規劃於上游)產生 PDF/A-4 輸出,並以外部驗證器作為關卡符合性semantic
accessible-pdfua2-from-html(規劃於上游)為無障礙 PDF/UA-2 輸出撰寫標記化結構無障礙semantic
validate-signature(規劃於上游)檢查 PDF 是否帶有簽章,以及其信任邊界檢查semantic

建構文件、分頁並設定樣式。

食譜它的作用模組設定檔
render-html-to-pdf(規劃於上游)將 HTML 文件轉譯為 PDFHtmlstructural
style-with-css(規劃於上游)對 HTML 轉譯套用 CSSHtmlstructural
html-table-layout(規劃於上游)佈局 HTML 表格Htmlstructural
paginate-long-html(規劃於上游)為長篇 HTML 文件分頁Htmlstructural
compose-text-and-fonts(規劃於上游)以排版控制組合文字排版structural
embed-and-subset-fonts(規劃於上游)嵌入並子集化字型字型structural
cjk-vertical-writing(規劃於上游)以直書模式排版 CJK 文字排版structural
multi-page-document(規劃於上游)建構多頁文件文件structural
headers-and-footers(規劃於上游)加入連續的頁首與頁尾佈局structural

向量、影像、圖層與座標空間。

食譜它的作用模組設定檔
draw-vector-graphics(規劃於上游)繪製向量圖形圖形structural
gradients-and-transparency(規劃於上游)套用漸層與透明度圖形structural
embed-images(規劃於上游)嵌入點陣影像內容structural
optional-content-layers(規劃於上游)使用選用內容(圖層)圖形structural
transform-coordinate-space(規劃於上游)變換座標空間圖形structural

書籤、連結、註解與 AcroForm 欄位。

食譜它的作用模組設定檔
bookmarks-and-toc(規劃於上游)建構書籤與目錄導覽structural
links-and-annotations(規劃於上游)加入連結與註解導覽structural
generate-barcodes(規劃於上游)產生條碼條碼bitwise
fill-pdf-form(規劃於上游)填寫 AcroForm表單structural
flatten-form-fields(規劃於上游)平面化表單欄位表單structural

設定中繼資料與檢視器行為。

食譜它的作用模組設定檔
set-document-metadata(規劃於上游)設定文件中繼資料中繼資料structural
set-viewer-preferences(規劃於上游)設定檢視器偏好文件structural

加密、簽署、無障礙與設定檔輸出。這些食譜會在各自的食譜頁面標明「支援≠符合性」與「存在≠有效性」的邊界。

食譜它的作用模組設定檔
encrypt-with-permissions(規劃於上游)以權限旗標加密安全性structural
sign-pades-b-b(規劃於上游)套用 PAdES 簽章(B-B 與 B-T)安全性semantic
inspect-existing-signature(規劃於上游)檢查既有簽章檢查semantic
tagged-pdf-ua2(規劃於上游)為 PDF/UA-2 產出標記化結構無障礙semantic
pdf-a-4-output(規劃於上游)產生 PDF/A-4 輸出符合性semantic
validate-conformance(規劃於上游)依符合性設定檔進行驗證合規semantic

從 PDF 讀回內容與結構。

食譜它的作用模組設定檔
extract-text-content(規劃於上游)擷取文字內容文字semantic
parse-and-inspect-pdf(規劃於上游)剖析並檢查 PDF檢查semantic
inspect-layout-boxes(規劃於上游)檢查佈局方框檢查semantic

橫跨數個模組的模式。

食譜它的作用橫跨設定檔
worker-safe-batch-rendering(規劃於上游)在長時間執行的工作行程中安全地轉譯(共用登錄、有界的記憶體)Core · Performance · Supportsemantic
exception-aware-error-handling(規劃於上游)以 NextPDF 例外階層處理錯誤Exception · Contractsstructural
observe-with-opentelemetry(規劃於上游)以 OpenTelemetry 觀測轉譯Observability · Telemetry · Eventsemantic

這些食譜要能發佈,必須先在核心儲存庫中新增一支 examples/*.php 以及一個 tests/Cookbook/Php/ 測試框架。上方的 slug 已是最終版本。在範例落地並執行其測試之前,該頁面仍是一個佔位符:

  • sign-pades-b-b(規劃於上游)(涵蓋 PAdES B-B 與 B-T)
  • inspect-existing-signature(規劃於上游)
  • extract-text-content(規劃於上游)
  • parse-and-inspect-pdf(規劃於上游)
  • validate-conformance(規劃於上游)
  • inspect-layout-boxes(規劃於上游)
  • worker-safe-batch-rendering(規劃於上游)(範例已存在;已新增記憶體/GC 測試框架測試)
  • observe-with-opentelemetry(規劃於上游)(已新增 PHP 原生範例)

上方其餘每一道食譜都已有作為背書的 examples/*.php,只需要再加上一個測試框架包裝。本索引記錄該 slug 與最終頁面,並未宣稱任何尚待處理的頁面已經完成。

  • 整合食譜——框架、轉譯器與服務的整合索引。
  • 食譜慣例——本索引中每一道可執行食譜都遵循的契約。