ลายเซ็นการรับรองและการล็อกฟิลด์

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 และถูกปฏิเสธโดยเมธอดของผู้ผลิต

ขอบเขตการล็อกฟิลด์

ค่า อาร์กิวเมนต์ฟิลด์ ผลหลังการลงนาม
flaAllต้องว่างล็อกฟิลด์แบบฟอร์มทั้งหมด
flaIncludeชื่อฟิลด์ที่ไม่ซ้ำกันหนึ่งรายการขึ้นไปล็อกเฉพาะฟิลด์ที่ระบุ
flaExcludeชื่อฟิลด์ที่ไม่ซ้ำกันหนึ่งรายการขึ้นไปล็อกฟิลด์ทุกฟิลด์ยกเว้นฟิลด์ที่ระบุ

AttachSignatureFieldLock ปฏิเสธชื่อที่ว่าง ชื่อที่ซ้ำกัน ค่าการกระทำที่ไม่ถูกต้อง รูปร่างฟิลด์ที่ไม่เข้ากัน ฟิลด์เป้าหมายที่ไม่ได้ลงนาม หรือฟิลด์ที่มีการล็อกหรือนโยบาย 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 กำหนดเป้าหมายไปที่ดิกชันนารีลายเซ็นเดียวกัน

หากมีทั้ง SigFieldLock และ FieldMDP การกระทำและรายการฟิลด์ของพวกมันต้องตรงกัน

ตัวอ่านดำเนินการตรวจสอบดิกชันนารีและอาร์เรย์ที่มีขอบเขต และไม่ดำเนินการ JavaScript การกระทำ หรือเนื้อหาลายเซ็น

ขอบเขตการตรวจสอบความถูกต้อง

GetLoadedSignaturePermissions รายงานเฉพาะโครงสร้างนโยบาย

VerifyLoadedSignature ยังคงรายงานความสมบูรณ์ของการเข้ารหัสแยกต่างหาก

เมธอดใดเมธอดหนึ่งไม่อ้างว่าการแก้ไขเพิ่มเติมในภายหลังทุกครั้งเป็นไปตามสิทธิ์ DocMDP หรือ FieldMDP ที่รายงาน เนื่องจากสิ่งนั้นต้องการการวิเคราะห์การเปลี่ยนแปลงเชิงความหมายทีละการแก้ไข

ประสิทธิภาพ

การตรวจสอบความถูกต้องของผู้ผลิตจะสแกนเฉพาะฟิลด์ AcroForm ที่สร้างขึ้นและอาร์เรย์การอ้างอิงลายเซ็นขนาดเล็ก ในขณะที่การตรวจสอบที่โหลดจะอ่านเฉพาะลายเซ็นที่เลือก การล็อก การอ้างอิง และรายการสิทธิ์ Catalog

จะไม่มีการถอดรหัสเนื้อหาของหน้า สตรีมรูปภาพ โปรแกรมแบบอักษร หรือวัตถุทางอ้อมที่ไม่เกี่ยวข้อง

ดูเพิ่มเติม