THotPDF.ValidatePDFA4 Method

針對支援的 PDF/A-4 基礎、PDF/A-4e 工程或 PDF/A-4f 關聯檔案設定檔,驗證產生或載入的物件圖,並傳回穩定的結構化診斷

宣告

function ValidatePDFA4(
  const Options: THPDFPDFA4ValidationOptions;
  out Issues: THPDFPDFA4ValidationIssues): boolean; overload;

function ValidatePDFA4(
  const Options: THPDFPDFA4ValidationOptions;
  out Findings: THPDFComplianceFindings): boolean; overload;

單元

HPDFDoc

設定檔與嚴重性類型

THPDFPDFA4Profile = (
  p4pAutomatic,
  p4pBase,
  p4pEngineering,
  p4pAssociatedFiles
);

THPDFPDFA4IssueSeverity = (
  p4isWarning,
  p4isError
);

THPDFPDFA4Profile 負責選擇中繼資料推斷或明確的一致性設定檔;THPDFPDFA4IssueSeverity 則區分建議性診斷與驗證錯誤

選項

欄位用途
Profile選擇自動中繼資料偵測、基礎、工程或關聯檔案驗證
MaxObjects限制物件圖的迭代走訪,預設為 1,000,000 個物件
MaxIssues限制保留的診斷數量,預設為 1,024 筆
MaxDecodedBytes限制累計解碼的中繼資料、ICC 與內容串流位元組數,預設為 64 MiB
MaxContentTokens限制累計的內容串流 token 數,預設為 4,000,000 個
CheckEmbeddedFonts檢查轉譯用字型是否帶有內嵌字型程式
CheckAnnotationAppearances檢查附註旗標與正常外觀串流
CheckOptionalContent檢查選用內容組態的名稱與唯一性
CheckColourSpaces檢查實際塗色的裝置色彩、ICC 設定檔、輸出意圖、預設值、影像、漸層、表單與透明度群組
CheckTransparency檢查實際塗色的 alpha、軟遮罩、混合模式,以及頁面層級混合色彩空間的涵蓋情況
CheckCompositeFonts檢查 Type 0 子代字型、CIDSystemInfo、CMap 相容性與 CIDToGIDMap 限制
CheckMetadataPackets檢查每個中繼資料串流的 UTF-8、封包標頭、RDF 信封與 PDF/A 識別限制

診斷

每個 THPDFPDFA4ValidationIssue 會回報嚴重性、穩定的命名空間代碼、適用的 ISO 19005-4 條款、物件路徑、物件編號、已知時以 0 起算的頁面索引,以及人類可讀的訊息

THPDFComplianceFindings 多載會透過共用的機器可讀檢查結果模型公開同樣的走訪,並標記 PDF/A-4 設定檔與 crsNotAttempted 修復狀態

驗證器涵蓋 PDF 2.0 識別、trailer ID 與加密狀態、每個中繼資料封包、Info 限制、ICC 標頭與通道數、文件與頁面輸出意圖、實際塗色的裝置色彩、跨內容串流陣列與巢狀 Form XObject 繼承的圖形狀態、影像遮罩、漸層、透明度、轉譯字型的內嵌、複合字型關聯、附註與外觀、AcroForm 限制、動作與額外動作、關聯檔案、選用內容、外部參照,以及設定檔特定的 3D 或附件規則

色彩與透明度的檢查結果是根據實際繪製運算子判定,而不只看色彩設定運算子;內容 token 化與已解碼串流的重用會快取,但每次呼叫仍會為自己的頁面或 Form 環境求值繼承的圖形狀態

解碼位元組、內容 token、物件與保留診斷的上限都以失敗關閉方式處理,會先產出穩定的 pdfa4.validation.* 檢查結果,不讓無上限的工作繼續

範例

var
  Options: THPDFPDFA4ValidationOptions;
  Issues: THPDFPDFA4ValidationIssues;
begin
  Options := THPDFPDFA4ValidationOptions.Default;
  Options.Profile := p4pAutomatic;
  if not PDF.ValidatePDFA4(Options, Issues) then
    raise Exception.CreateFmt('%s at %s',
      [String(Issues[0].Code), String(Issues[0].Path)]);
end;

產生行為

EndDoc 會對 '4'、'4E' 與 '4F' 自動執行驗證器,若仍留下錯誤,會在序列化之前丟出例外

PDF/A-4 產生時會省略 trailer 的 Info 項目;PDF/A-4f 一律會建立必需的 EmbeddedFiles 名稱樹;檔案附件附註只有 PDF/A-4f 接受,此時內嵌串流、Filespec、AF 關聯、Catalog 的 AF 陣列與名稱樹會一併輸出

相關 API