THotPDF.BeginIncrementalUpdate

THotPDF

 

الأعلى  الطرق  التالي

يحمل PDF موجودًا ويحول المستند إلى وضع تحديث تزايدي append-only

 

Delphi syntax:

procedure BeginIncrementalUpdate(const SourceFile: TFileName);

 

C++ syntax:

void __fastcall BeginIncrementalUpdate(System::Sysutils::TFileName SourceFile);

 

الوصف

استدع BeginIncrementalUpdate عندما يجب تمديد PDF موجود دون إعادة كتابة بايتاته الأصلية. يحلل HotPDF ملف المصدر عبر مسار التحميل العادي ويحفظ نسخة byte-for-byte من الملف الأصلي لخطوة الحفظ اللاحقة

 

تعلّم الكائنات غير المباشرة الجديدة التي تنشأ بعد هذا الاستدعاء dirty تلقائيًا. أما الكائنات المحملة الموجودة فلا يعاد إصدارها إلا عندما يعلّمها المستدعي بواسطة MarkDirty

 

يفيد هذا المسار لإضافة حقل توقيع لاحق، أو إلحاق metadata، أو تمديد مستند موقع مسبقًا مع الحفاظ على byte ranges التي تغطيها التوقيعات الرقمية السابقة

 

PubSecKeyMaterial ثم استدعِ النسخة أحادية المعامل. يحتفظ HotPDF بمفتاح الملف المصدَّق أو FEK خلال عمر التحديث فقط، ويحافظ على السلسلة والتدفق والبيانات الوصفية وسياسات مرشح تشفير Identity الأصلية، ويشتق مفاتيح الكائنات القديمة من رقم الكائن ومن جيله المحفوظ معًا

يُورَّث قاموس التشفير من المراجعة المصدرية ولا يمكن إدخاله أو استبداله أو إعادة تهيئته أثناء نشاط الوضع التزايدي. وإعادة كتابة مرشحات التشفير الصريحة غير المتجانسة غير المدعومة تفشل قبل الإخراج بدلًا من إصدار نص مشفر تحت سياسة مختلفة

 

يفيد سير العمل هذا في إضافة حقل توقيع لاحق أو إلحاق بيانات وصفية أو توسيع مستند موقَّع بالفعل مع الحفاظ على مدى البايتات التي تغطيها التواقيع الرقمية السابقة. ويُستخدم المتابعة النشطة حتى عندما يحوي المصدر أصلًا عدة مراجعات

 

إضافة توقيع ثانٍ

لا تبقى أي صفحة حالية بعد تحميل المستند، لذا يُضاف الحقل القابل للتوقيع بواسطة AddLoadedSignedSignatureField التي تأخذ فهرس الصفحة. يحجز هذا الحقل مساحة التوقيع التي تملؤها SignPDFWithPFX، أو PreparePDFForSigning و InsertSignatureHex مع الموقِّع الخارجي، بعد حفظ التحديث. يغطي التوقيع الجديد الملف كاملًا وتبقى التواقيع السابقة صالحة لأن بايتاتها لا تُمسّ

PDF := THotPDF.Create(nil);
try
  PDF.BeginIncrementalUpdate('Signed.pdf');
  PDF.AddLoadedSignedSignatureField(0, 300, 120, 500, 160, 'Approver', 8192);
  PDF.SaveIncrementalUpdate('Prepared.pdf');
finally
  PDF.Free;
end;
THotPDF.SignPDFWithPFX('Prepared.pdf', 'SignedTwice.pdf', 'Signer.pfx', 'password');

 

انظر أيضا: MarkDirty, SaveIncrementalUpdate, AddLoadedSignedSignatureField, GetIncrementalUpdateSourceInfo, AcroForm Support, PDF Filter Support