امضاهای گواهی و قفلهای فیلد
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 را میخواند
هیچ محتوای صفحه، جریان تصویر، برنامه قلم یا شیء غیرمستقیم نامرتبط رمزگشایی نمیشود