function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport;
把 PDFium 簽章事實與 CMS 演算法和政策檢查、憑證信任與撤銷狀態、RFC 3161 時間戳記狀態、DSS/VRI 涵蓋範圍,以及增量修訂版政策分析結合在一起
此方法保留一份不可變的原始位元組擷取,並在合規、信任、DSS 與修訂版階段重複使用,不必重新儲存文件
簽署者與有序憑證路徑識別以 SHA-256 值輸出,而不是把憑證本體複製進報告
TrustOptions 控制離線或線上信任評估、撤銷檢查、時間戳記檢查、進度、逾時與取消MaxSourceBytes 在證據分析開始前拒絕過大的保留來源MaxSignatures 限制蒐集的每個簽章證據MaxRevisionChangesPerSignature 限制每個簽章保留的物件層級修訂版變更MaxValidationMaterials 與 MaxStoredValidationBytes 為憑證、OCSP 與 CRL 證據設定界限,且不解碼壓縮串流MaxVriEntries 限制簽章專屬的 VRI 字典TPadesEvidenceReport 包含驗證與修訂版摘要、雜湊後的 DSS 材料記錄、VRI 參照圖、PDFium 簽章數、截斷狀態,以及每個保留簽章一個 TPadesSignatureEvidence
ToJson 輸出巢狀的證據文件,ToCsv 則為每個保留的修訂版變更輸出一列,簽章沒有保留變更時輸出一列摘要
TPadesSignatureEvidence.Validation 會把簽章的 RevocationReason 與 NativeRevocationError 跟時間戳的 TimeStampRevocationReason 與 NativeTimeStampRevocationError 分開保留
signatures 中的每個 JSON 條目都包含 revocationReason、nativeRevocationError、timeStampSignatureStatus、timeStampTrustStatus、timeStampRevocationStatus、timeStampRevocationReason 與 nativeTimeStampRevocationError。既有成員與其意義都不變;JSON 格式沒有 schema-version 成員,消費端應按名稱讀取欄位,並容忍額外的成員
CSV 保留原本的 40 欄及其順序,並依上述順序附加同樣的七個欄位,共 47 欄。摘要列與修訂版變更列都包含這些診斷;既有欄位位置不變。讀取端應使用標頭名稱或容忍額外的尾隨欄位,而不是要求恰好 40 欄
原因字串為 none、certificateRevoked、crlExpired、crlNotYetValid、crlUnavailable、crlSignatureInvalid、crlInvalid、chainUntrusted 或 unknown。原生錯誤是數值形式的後端專屬代碼,例如 OpenSSL 的 X509 驗證錯誤或原始的 Windows 提供者/GetLastError DWORD 值,零表示沒有原生診斷。Windows 的值原樣匯出,不得解讀為鏈信任的彙總遮罩或共通的 HRESULT 空間
請以 revocationStatus 與 timeStampRevocationStatus 判定結論。原因為 none 或錯誤為零,也會出現在檢查被停用、未執行到,或後端缺少細部診斷的情況;匯出證據不會執行額外的驗證
Active 為 TrueIsTruncated 會被設定pvssIncomplete 的不可用報告
var
Options: TPadesEvidenceReportOptions;
Report: TPadesEvidenceReport;
begin
Options := TPadesEvidenceReportOptions.Default;
Report := Pdf1.BuildPadesEvidenceReport(Options);
TFile.WriteAllText('signature-evidence.json', Report.ToJson);
end;