Preflight Reports

合規性、文件檢查、自動化

PDF/UA 讀取器設定檔選擇

PDF/UA 檢查在 XMP 識別 pdfuaid:part=2 時選擇 part 2,否則沿用 part 1 檢查;本文描述的舊式 PDF/UA-1 檢查不表示適用於 part 2

PDF/UA-2 設定檔實作核心的識別、命名空間、角色與結構檢查;結構化報告使用 PDF/UA-2 與 ISO 14289-2,並揭露 fullCertification=false 與未驗證範圍

想強制指定目標 part,請用 CheckFilePDFUACompliance 或 RunPDFUAValidationPipelineTask;檢視能力限制請用 GetPDFUAReadValidationCoverageJSON

總覽

PDF Library for Delphi 可對外部 PDF 執行內建的 PDF/A 與 PDF/UA-1 檔案符合性檢查,並把結果變成可重複使用的報告輸出。應用程式或建置管線需要與 CheckFileCompliance 相同的診斷、卻不想自己管理字串清單控制代碼時,就用這些報告 API。

報告管線刻意分層。CheckFileCompliance 是回傳問題清單控制代碼的低階 API;CreatePreflightReport 把所選檢查格式化成穩定的純文字本體;CreatePreflightReportEx 把同一份文字報告轉成文字、JSON、HTML 或 CSV,所有格式因此共用相同的通過/失敗狀態與問題數。

程式庫 API

CheckFileCompliance對 PDF 檔案執行單項所選符合性檢查,通過傳回 0,否則傳回含問題行的 StringListID。
CreatePreflightReport執行 PDF/A、PDF/UA-1 或兩者檢查,並傳回純文字報告,含檔頭中繼資料、每項檢查一節與最終彙總。
CreatePreflightReportEx以文字 (0)、JSON (1)、HTML (2) 或 CSV (3) 格式傳回同一份報告。未知格式值回退為文字。
SavePreflightReport以 UTF-8 寫出純文字報告,必要時建立上層目錄。
SavePreflightReportEx以 UTF-8 寫出文字、JSON、HTML 或 CSV 報告,必要時建立上層目錄。
ComparePreflightReports比較兩份純文字報告,忽略易變的 Generated: 時間戳記行,只有穩定內容有變時才傳回精簡 diff。

格式合約

Text正規的報告本體。內含 Generated、Input、Checks、Issue mode、每項所選檢查一節,以及帶 Total issues 與 Result 的 Summary 區塊。
JSON單一物件,含 title、generated、input、checks、issueMode、sections 與 summary。每個 section 有 name、status 與問題字串陣列。
HTML獨立的 UTF-8 HTML 文件。文字報告會做 HTML 跳脫後放進預格式化區塊顯示,報告內容因此可見,不會被當成標記解讀。
CSV各列使用固定的欄位 kind,section,status,code,message。meta 列承載檔頭欄位;check 列承載 PASS/FAIL 區段狀態;issue 列把數值問題代碼與訊息分開;summary 列承載最終合計。

合規選擇

報告 API 的 ComplianceTests 使用位元遮罩:1 選 PDF/A、2 選 PDF/UA-1、3 兩者都選;傳 0 也是兩項都跑。Options 目前使用位元 1 讓每個所選檢查在第一個問題後停止;傳 0 則收集所有回報的問題。

Command-Line Demo

Delphi 的 PreflightReport 主控台示範展示報告流程,不含任何應用程式專屬 UI。它可以驗證單一 PDF、產生格式化輸出、把新文字報告與基準比較,或批次處理整個目錄。

PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt"
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.json" --json
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.csv" --format csv
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt" --compare "C:\Baselines\invoice.preflight.txt"
PreflightReport.exe --input-dir "C:\PDFs" --output-dir "C:\Reports" --recursive --format html

單檔模式的結束代碼:所選檢查沒有回報問題為 0;命令列或執行期錯誤為 1;有回報任何問題或基準比較有差異為 2。目錄模式為每個 PDF 寫一份 <主檔名>.preflight.<副檔名> 檔案,並加上一份 preflight-summary.csv,記錄來源路徑、通過/失敗狀態、問題數與報告路徑。

比較備註

ComparePreflightReports 是針對純文字報告定義的。即使同一次執行給人看的輸出是 JSON、HTML 或 CSV,也應餵入基準文字報告與新產生的文字報告。比較器會把 Generated: 行正規化,因為時間戳記每次執行都不同;其他穩定的行則按順序比較,並用小的前瞻窗口讓插入/刪除 diff 保持可讀

另見

CheckFileCompliance, CreatePreflightReport, CreatePreflightReportEx, SavePreflightReport, SavePreflightReportEx, ComparePreflightReports, GetPDFUADiagnostics