認證簽章與欄位鎖

HotPDF 可以編寫附加到認證簽章和已簽欄位鎖的 PDF 權限結構,然後在已載入文件中檢查相同的結構

生產者 API

procedure AddCertificationSignatureField(
  const FieldName: AnsiString;
  Rectangle: TRect;
  Permission: THPDFDocMDPPermission;
  ContentsBytes: Integer = 8192;
  const SubFilter: AnsiString = 'adbe.pkcs7.detached';
  const Reason: AnsiString = '';
  const Location: AnsiString = '';
  const ContactName: AnsiString = '';
  Flags: THPDFFormFieldFlags = []);

procedure ConfigureCertificationSignature(
  const FieldName: AnsiString;
  Permission: THPDFDocMDPPermission);

procedure AttachSignatureFieldLock(
  const FieldName: AnsiString;
  Action: THPDFFieldLockAction;
  const Fields: array of AnsiString);

AddCertificationSignatureField 將已簽佔位符建立與認證設定結合在一起

ConfigureCertificationSignature 用於已存在的已編寫已簽佔位符,並要求該欄位是第一個攜帶簽章字典的欄位

一個文件只能包含一個認證簽章,因此在物件圖被更改之前會拒絕第二個設定請求

這些 API 自動協商 PDF 1.5 輸出

DocMDP 權限等級

值認證權限
dmpNoChanges認證後不允許任何更改
dmpFormFillAndSign允許表單填寫、範本實例化和簽署
dmpFormFillSignAndAnnotate允許上述更改以及註釋的建立、刪除和修改

dmpNone 保留用於沒有 DocMDP 轉換的檢查結果,生產者方法會拒絕它

欄位鎖範圍

值Fields 引數簽署後的效果
flaAll必須為空鎖定每個表單欄位
flaInclude一個或多個唯一欄位名稱僅鎖定列出的欄位
flaExclude一個或多個唯一欄位名稱鎖定除列出欄位外的每個欄位

AttachSignatureFieldLock 拒絕空名稱、重複名稱、無效的動作值、不相容的 Fields 形狀、未簽署的目標欄位,或已經攜帶鎖或 FieldMDP 策略的欄位

產生的結構

Delphi 範例

var
  LockedFields: THPDFAnsiStringArray;
begin
  HotPDF.CurrentPage.AddTextField(
    'InternalCode', '', Rect(40, 80, 220, 108));
  HotPDF.CurrentPage.AddCertificationSignatureField(
    'CertSig', Rect(40, 140, 260, 190),
    dmpFormFillAndSign, 8192,
    'adbe.pkcs7.detached', 'Document approval');
  SetLength(LockedFields, 1);
  LockedFields[0] := 'InternalCode';
  HotPDF.CurrentPage.AttachSignatureFieldLock(
    'CertSig', flaInclude, LockedFields);
end;

已載入檢查

function GetLoadedSignaturePermissions(
  SigIndex: Integer;
  out Info: THPDFSignaturePermissionInfo): Boolean;

讀取器報告 DocMDP 權限、Catalog 連結、SigFieldLock 範圍、FieldMDP 範圍、欄位名稱、結構有效性和診斷問題字串

它驗證必需的直接和間接物件形狀,並確認 Catalog /Perms /DocMDP 指向同一個簽章字典/P 2

如果 SigFieldLock 和 FieldMDP 都存在,它們的動作和欄位清單必須一致

讀取器執行有界的字典和陣列檢查,不執行 JavaScript、動作或簽章內容

標準轉換涵蓋範圍

方法回報的原則
DocMDP認證權限與對應的 Catalog /Perms /DocMDP 目標
UR文件、註解、表單、簽章與內嵌檔案權限,加上舊式 /UR 或位元組範圍 /UR3 來源
FieldMDPAll、Include 或 Exclude 的欄位鎖定範圍,以及拷貝的 SigFieldLock 協議
Identity從必要的間接 /Data 根可達、且無循環的傳遞物件編號

未知的方法名稱會保留在 UnknownTransformMethods

驗證邊界

GetLoadedSignaturePermissions 僅報告策略結構

VerifyLoadedSignature 繼續單獨報告密碼學完整性

兩個方法都不聲稱每個後續增量修訂都遵守報告的 DocMDP 或 FieldMDP 權限,因為這需要逐修訂的語意更改分析AnalyzeLoadedSignatureRevisions 會逐修訂版進行語意變更分析,涵蓋位元組範圍的 DocMDP、FieldMDP、UR3 與 Identity 原則;已棄用的非位元組範圍 UR 物件摘要簽章仍可由結構檢視取得

SaveIncrementalUpdateAuthenticated

效能

生產者驗證只掃描已編寫的 AcroForm 欄位和小的簽章參照陣列,而已載入檢查只讀取選定的簽章、其鎖、其參照和 Catalog 權限項目

不解碼任何頁面內容、影像串流、字型程式或無關的間接物件

參見