ลายเซ็นการรับรองและการล็อกฟิลด์
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 อยู่แล้ว
โครงสร้างที่ปล่อยออกมา
- ลายเซ็นการรับรองมีอาร์เรย์
/Referenceโดยตรงซึ่งมีดิกชันนารีการอ้างอิงลายเซ็น DocMDP โดยตรงและพารามิเตอร์การแปลงโดยตรง - รายการ Catalog
/Perms /DocMDPชี้ไปที่ดิกชันนารีลายเซ็นทางอ้อมเดียวกัน - รายการฟิลด์
/Lockชี้ไปที่ดิกชันนารีทางอ้อม/Type /SigFieldLock - ขอบเขตการล็อกถูกคัดลอกไปยังการอ้างอิงลายเซ็น FieldMDP โดยตรง และรายการ
/Dataของมันชี้ไปที่ราก Catalog ทางอ้อม - ดิกชันนารีลายเซ็นทำเครื่องหมายการอ้างอิงการแปลงว่าสำคัญผ่าน
/V 1
ตัวอย่าง 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
จะไม่มีการถอดรหัสเนื้อหาของหน้า สตรีมรูปภาพ โปรแกรมแบบอักษร หรือวัตถุทางอ้อมที่ไม่เกี่ยวข้อง