TPDFlibSignDoc
Security and Signatures
الوصف
توفر TPDFlibSignDoc وصولًا مباشرًا إلى حقول التوقيع في المستند دون تحميل PDF كاملًا في الذاكرة
تفتح الفئة ملفًا أو تدفقًا يملكه المستدعي أو سلسلة بايتات ANSI، وتعدّد حقول توقيع AcroForm، وتقرأ القيم الخام لتوقيع قائم ليتمكن المدقق من إعادة حساب خلاصة /ByteRange
وتؤدي كذلك جانب الكتابة من التحديثات التزايدية: Append يبدأ إصدارًا جديدًا، وAddSignatureField يسجّل حقلًا جديدًا، وتكتب عائلة SetSignatureValue في المساحة المحجوزة مع إبقاء الإصدارات السابقة سليمة
يقود العرض التوضيحي SigningWorkbench هذه الفئة من طرف إلى طرف، من تعداد الحقول إلى فحص ByteRange واستخراج الشهادة
الصيغة
Delphi
TPDFlibSignDoc = Class
Public
Destructor Destroy; Override;
Function Open(Const FileName: WideString; Const Password: WideString; ReadWrite: Boolean): Boolean;
Function OpenStream(SourceStream: TStream; Const Password: WideString): Boolean;
Function OpenString(Const SourceData: AnsiString; Const Password: WideString): Boolean;
Procedure Append;
Function AppendToFile(Const FileName: WideString): Boolean;
Function AppendToStream(TargetStream: TStream): Boolean;
Procedure Close;
Function AddSignatureField(Const FieldName: WideString; PageNumber: Integer): Integer;
Function HasSignatureField(Const FieldName: WideString): Boolean;
Procedure GetSignatureFieldNames(Names: TStrings);
Function GetSignatureValueObjNum(Const FieldName: WideString): Integer;
Function GetSignatureValueByName(Const FieldName: WideString; ValueKey: Integer): AnsiString;
Function GetSignatureTextValueByName(Const FieldName: WideString; ValueKey: Integer): WideString;
Function GetSignatureDocMDPLevelByName(Const FieldName: WideString): Integer;
Function GetSignaturePermissionInfoByName(Const FieldName: WideString;
Out Report: TPDFlibSignaturePermissionReport): Boolean;
Function GetSignatureSeedValueEx(Const FieldName: WideString;
Out SeedValue: TPDFSignatureSeedValue): Boolean;
Function GetSignatureContentsHashHexByName(Const FieldName: WideString): AnsiString;
Function SetSignatureValue(Const FieldName: WideString; Const NewValue: AnsiString;
DocMDPLevel: Integer): Boolean;
Function SetSignatureFieldLock(Const FieldName: WideString;
Const Action: AnsiString; Const Fields: TArray): Boolean;
Procedure SetSignatureImage(Const FieldName: WideString; Const ImageData: AnsiString; ImageOptions: Integer);
Procedure SetSignatureAppearanceText(Const FieldName, Text: WideString; FontSize, FontRed, FontGreen, FontBlue: Double);
Procedure SetSignatureBounds(Const FieldName: WideString; Left, Top, Width, Height: Double);
Function GetDocumentBytes: TBytes;
Function GetDocumentSize: Int64;
Function ReadDocumentRange(Offset: Int64; Buffer: Pointer; Count: Integer): Integer;
Function GetDSSValidationMaterial(Const FieldName: WideString;
Out Certs, CRLs, OCSPs: TStructStrArray; Out UsedVRI: Boolean): Boolean;
Procedure SetSignatureFlags(NewFlags: Integer);
Procedure EnsurePAdESExtensions(ESICLevel: Integer);
Property IsOpen: Boolean Read FIsOpen;
Property SignatureFieldPosition: Int64 Read FSignatureFieldPosition;
Property SignatureFieldLength: Integer Read FSignatureFieldLength;
End; الطرق
| Open, OpenStream, OpenString | تفتح ملفًا أو تدفقًا أو سلسلة ANSI في الذاكرة، واختياريًا للقراءة والكتابة؛ تقبل Open كلمة مرور وعَلما للقراءة-الكتابة |
|---|---|
| Append, AppendToFile, AppendToStream | تبدأ إصدارًا تزايديًا جديدًا في المكان، أو تُلحق الإصدار بملف أو تدفق جديد |
| Close | تحرّر القارئ الذكي الأساسي ومقابض المستند |
| AddSignatureField | تسجّل حقل توقيع جديدًا في الصفحة المعطاة وتُعيد رقم كائنه، أو 0 عند الفشل |
| HasSignatureField | True عندما يوجد حقل توقيع بالاسم المؤهل الكامل |
| GetSignatureFieldNames | تملأ TStrings بكل أسماء حقول التوقيع في AcroForm |
| GetSignatureValueObjNum | رقم كائن قاموس قيمة التوقيع، أو 0 إذا كان الحقل غير موقّع |
| GetSignatureValueByName | قيم ثنائية خام يختارها ValueKey: 0 = /Contents، 1 = /Cert، 2 = /Filter، 3 = /SubFilter، ومن 11 إلى 14 مدخلات /ByteRange من 0 إلى 3 كسلاسل عشرية |
| GetSignatureTextValueByName | قيم نصية يختارها ValueKey: 0 = /M، 1 = /Name، 2 = /Reason، 3 = /Location، 4 = /ContactInfo، 5 = /Type |
| GetSignatureDocMDPLevelByName | مستوى تحويل DocMDP (قيمة P) لتوقيع مصادق، 0 عند الغياب |
| GetSignaturePermissionInfoByName | تُحلّل قيود DocMDP وFieldMDP للتوقيع في سجل تقرير |
| GetSignatureSeedValueEx | تقرأ قاموس القيمة البذرية /SV الذي يقيّد ما يمكن للواقِع كتابته في الحقل |
| GetSignatureContentsHashHexByName | خلاصة سداسية عشرية للمحتوى الموقّع الذي يغطيه ByteRange |
| SetSignatureValue | تكتب توقيعًا مكتملًا في مساحة /Contents المحجوزة وتسجّل مستوى DocMDP |
| SetSignatureFieldLock | تكتب قاموس قفل حقل بإجراء وقائمة أسماء حقول |
| SetSignatureImage, SetSignatureAppearanceText, SetSignatureBounds | تتحكم في المظهر المرئي: صورة مرسومة، وتيار مظهر نصي بحت بُني في v3.221.0، وحدود حقل صريحة |
| GetDocumentBytes, GetDocumentSize, ReadDocumentRange | وصول خام إلى البايتات الأساسية لتجزئة الملف كله أو مقطع ByteRange خارجيًا |
| GetDSSValidationMaterial | تُعيد شهادات DSS وقوائم CRL وردود OCSP لحقل معيّن وتُبلّغ عما إذا استُخدمت أدلة VRI |
| SetSignatureFlags, EnsurePAdESExtensions | تضبط /SigFlags وتضيف مخطط امتداد ETSI PAdES |
المعاملات
| IsOpen | True بين فتح ناجح وClose |
|---|---|
| SignatureFieldPosition | إزاحة محتوى حقل التوقيع المحدد في الملف |
| SignatureFieldLength | طول البايتات المحجوز لمحتويات التوقيع المحدد |
ملاحظات
يتجسد الملف كله عبر GetDocumentBytes لأن مقطعي ByteRange يغطيان معًا الملف بأكمله تقريبًا
وللتوقيع دون لمس هذه الواجهة منخفضة المستوى، تعرض الواجهة الرابطة الخط المكافئ عبر دوال SignProcess الموثقة
انظر أيضًا
TPDFlibSignatureVerifier, TPDFlibPFXFile, TPDFlibSigner, NewSignProcessFromFile, GetSignProcessByteRange