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;
提交契約
True表示交易已被接受,包括已符合規範的文件無需變更的情況False表示交易在超出上限、驗證退化、發生例外,或RequireFullConformance政策未滿足之後已復原Report.ValidationSucceeded是修復提交後最權威的完整符合性結果- 使用預設選項時,安全修復可以提交,而互不相關的不安全驗證發現仍明確留在
Issues與Findings中
安全修復邊界
此方法可以正規化 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;