تواقيع الشهادة وأقفال الحقول
يستطيع HotPDF تأليف هياكل أذونات PDF المرفقة بتواقيع الشهادة وأقفال الحقول الموقّعة، ثم فحص الهياكل ذاتها في مستند محمّل
واجهة برمجة المنتِج
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 مخصصاً لعنصر نائب موقّع مُؤلَّف موجود ويتطلب أن يكون هذا الحقل هو أول حقل يحمل قاموس توقيع
لا يمكن أن يحتوي المستند على أكثر من توقيع شهادة واحد، لذا يُرفض طلب الإعداد الثاني قبل تغيير مخطط الكائنات
تتفاوض هذه الواجهات تلقائياً مع مُخرجات 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 فقط
لا تُفكّ ترميز أي محتويات صفحة أو تدفق صورة أو برنامج خط أو كائن غير مباشر غير مرتبط