مرجع HotPDF

يمكن لـ HotPDF إنشاء هياكل صلاحيات DocMDP وFieldMDP، ثم فحص وتصنيف كل تابع تحويل توقيع قياسي في مستند محمّل

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 بين إنشاء placeholder موقَّع وتهيئة الشهادة (certification)

تُستخدم ConfigureCertificationSignature مع placeholder موقَّع تم إنشاؤه مسبقًا، وتتطلب أن يكون ذلك الحقل أول حقل يحمل قاموس توقيع

لا يمكن لمستند أن يحتوي إلا على توقيع تصديق (certification) واحد، لذا يُرفض طلب تهيئة ثانٍ قبل تغيير رسم الكائنات

لا يمكن لمستند أن يحتوي إلا على توقيع تصديق (certification) واحد، لذا يُرفض طلب تهيئة ثانٍ قبل تغيير رسم الكائنات

مستويات أذونات DocMDP

المرجع المرجع
dmpNoChangesالمرجع
dmpFormFillAndSignالمرجع
dmpFormFillSignAndAnnotateالمرجع

تُحجز dmpNone لنتائج الفحص التي لا تحتوي تحويل DocMDP، وترفضها توابع المُنشئ

مستويات أذونات DocMDP

المرجع المرجع المرجع
flaAllالمرجعالمرجع
flaIncludeالمرجعالمرجع
flaExcludeالمرجعالمرجع

ترفض AttachSignatureFieldLock الأسماء الفارغة، والأسماء المكررة، وقيم action غير الصالحة، وشكل Fields غير المتوافق، والحقل الهدف غير الموقَّع، أو الحقل الذي يحمل بالفعل قفلًا أو سياسة FieldMDP

مستويات أذونات DocMDP

مستويات أذونات DocMDP

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;

مستويات أذونات DocMDP

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

لا يمكن لمستند أن يحتوي إلا على توقيع تصديق (certification) واحد، لذا يُرفض طلب تهيئة ثانٍ قبل تغيير رسم الكائنات

يتحقق من الأشكال المباشرة وغير المباشرة المطلوبة، وأهداف /Perms في الـCatalog، وإصدارات التحويل، والمراجع المكررة، وقيود UR مقابل UR3، والقيمة الافتراضية الاختيارية /P 2 لـDocMDP

لا يمكن لمستند أن يحتوي إلا على توقيع تصديق (certification) واحد، لذا يُرفض طلب تهيئة ثانٍ قبل تغيير رسم الكائنات

لا يمكن لمستند أن يحتوي إلا على توقيع تصديق (certification) واحد، لذا يُرفض طلب تهيئة ثانٍ قبل تغيير رسم الكائنات

مستويات أذونات DocMDP

المرجعالمرجع
DocMDPالمرجع/Perms /DocMDPالمرجع
URالمرجع/URالمرجع/UR3المرجع
FieldMDPالمرجع
Identityالمرجع/Dataالمرجع

تُحفظ أسماء التوابع غير المعروفة في UnknownTransformMethods وتجعل هيكل الصلاحيات غير صالح، حتى لا يُتجاهَل أي تحويل حرج

مستويات أذونات DocMDP

تُبلغ GetLoadedSignaturePermissions بهيكل السياسة فقط

تستمر VerifyLoadedSignature في الإبلاغ عن السلامة التشفيرية بشكل منفصل

تُجري AnalyzeLoadedSignatureRevisions تحليل تغيّر دلالي مراجَعة بمراجَعة لسياسات DocMDP وFieldMDP وUR3 وIdentity ذات byte-range، بينما تبقى توقيعات UR object-digest القديمة غير المعتمِدة على byte-range متاحة للفحص البنيوي

تحوّل SaveIncrementalUpdateAuthenticated الفحص إلى إنفاذ فعلي: فهي تقرأ السياسات من لقطاتها الموقَّعة، وتصادق على التوقيعات المتحكمة، وتتحقق من كل المراجَعات اللاحقة، ولا تنشر إلا عبر استبدال ذرّي بعد نجاح كل سياسة

مستويات أذونات DocMDP

لا يمكن لمستند أن يحتوي إلا على توقيع تصديق (certification) واحد، لذا يُرفض طلب تهيئة ثانٍ قبل تغيير رسم الكائنات

لا يمكن لمستند أن يحتوي إلا على توقيع تصديق (certification) واحد، لذا يُرفض طلب تهيئة ثانٍ قبل تغيير رسم الكائنات

مستويات أذونات DocMDP