THotPDF.RepairPDFA4 Method

執行有界限的物件圖形交易:套用確定性的 PDF/A-4 正規化並驗證結果,然後不是提交完整的安全修復集合,就是還原原始文件狀態

宣告

function RepairPDFA4(
  const Options: THPDFPDFA4RepairOptions;
  out Report: THPDFPDFA4RepairReport;
  out Issues: THPDFPDFA4ValidationIssues): boolean; overload;

function RepairPDFA4(
  const Options: THPDFPDFA4RepairOptions;
  out Report: THPDFPDFA4RepairReport;
  out Issues: THPDFPDFA4ValidationIssues;
  out Findings: THPDFComplianceFindings): boolean; overload;

提交契約

安全修復邊界

此方法可以正規化 PDF 2.0 檔頭、補建遺漏的 trailer ID、建立或修復中繼資料串流與字典、以命名空間 URI 為準標準化 PDF/A 識別(保留合法的 RDF 前置詞)、移除禁止的 Catalog 項目,以及移除替代呈現結構

UTF-8 XMP 修復會移除被禁止的 packet 檔頭位元組與編碼屬性、採用標準的 PDF/A 識別命名空間、寫入 part=4 與 rev=2020,並選出正確的基準、工程或關聯檔案符合性屬性

修復管線絕不會改寫頁面或註解的內容串流、字型、色彩空間、透明度、影像、圖形運算子或擷取出的文字

復原與可稽核性

圖形快照涵蓋字典變更與中繼資料串流位元組,因此復原會還回原始檔頭、trailer 狀態、物件圖形、XMP 負載與頁面內容

共用 findings 的多載會附上修復動作、已套用/未解決/失敗/已復原狀態、修復計數、穩定的規則識別碼、條款、物件路徑、物件編號與頁面位置

物件、變更、保留議題、解碼位元組與內容 token 預算可防止惡意檔案把修復或其驗證關卡變成無上限的工作

範例

var
  Options: THPDFPDFA4RepairOptions;
  Report: THPDFPDFA4RepairReport;
  Issues: THPDFPDFA4ValidationIssues;
begin
  Options := THPDFPDFA4RepairOptions.Default;
  Options.Profile := p4pAutomatic;

  if not PDF.RepairPDFA4(Options, Report, Issues) then
    raise Exception.Create('PDF/A-4 repair rolled back');

  if not Report.ValidationSucceeded then
    LogRemainingPDFA4Issues(Issues);
end;

相關 API