PDFium Delphi Component Docs

MergeFiles

المكوّن: TPdf  ·  الوحدة: PDFium
يدمج مصادر PDF المدعومة بالملفات عبر واجهات استيراد الصفحات الأصلية مع تقييد مقابض المصادر وكشف سياسات تشغيل صريحة

الصياغة

function MergeFiles(const Sources: TPdfBatchMergeSources; out Report: TPdfBatchMergeReport): Boolean; overload;

function MergeFiles(const Sources: TPdfBatchMergeSources; const Options: TPdfBatchMergeOptions; out Report: TPdfBatchMergeReport): Boolean; overload;

class function TPdfBatchMergeSource.FromFile(const AFileName: string; const APageRange: string = ''; const APassword: string = ''): TPdfBatchMergeSource; static;

class function TPdfBatchMergeOptions.Default: TPdfBatchMergeOptions; static;

اختيار المصادر

الخيارات الافتراضية

ErrorPolicybmepStop
FormPolicybmfpPreserveNative
OutlinePolicybmopDiscard
ResourcePolicybmrpSourceScoped
PageChunkSizePdfBatchMergeDefaultPageChunkSize، وهو حاليًا 128 صفحة
InsertAt-1، أي الإلحاق بالوجهة
CreateDestinationTrue
CopyViewerPreferencesTrue
RollbackOnCancelOrFailureTrue

سياسة الموارد والإلغاء

ينفذ bmrpSourceScoped استيرادًا أصليًا واحدًا لكل مصدر، مما يتيح لـ PDFium إعادة استخدام خريطة كائناته المستنسخة عبر كل الصفحات المختارة من ذلك المصدر

يقسم bmrpChunked الاختيار إلى دفعات من PageChunkSize، فيوفر نقاط إلغاء أدق واستدعاءات أصغر أصليًا مقابل احتمال ازدواج موارد بين الدفعات

يكون مفتوحًا في أوقاتٍ مصدر TPdf واحد على الأكثر، ويُغلق كل مصدر فور محاولة استيراده

يُفحص الإلغاء بين عمليات المصادر والدفعات الأصلية؛ ولا يمكن مقاطعة استدعاء استيراد PDFium فردي

يستقبل OnProgress مراحل البدء والفتح والاستيراد والمصدر والتراجع والإلغاء والإخفاق والإكمال، ويستطيع ضبط معامل Cancel الخاص به؛ ويحمل كل لقطة TPdfBatchMergeProgress الحقول Stage و SourceIndex و SourceCount و FileName و SourcePageCount و ImportedSourceCount و ImportedPageCount و NativeImportCallCount

يعيد TPdfBatchMergeReport الحقول Status و SourceCount و AttemptedSourceCount و ImportedSourceCount و SkippedSourceCount و FailedSourceCount و ImportedPageCount و CommittedPageCount و RolledBackPageCount و PageCountBefore و PageCountAfter و NativeImportCallCount و LargestNativeImportPageCount و PeakOpenSourceCount و FormSourceCount و OutlineSourceCount و DestinationCreated و ViewerPreferencesSourceIndex و ErrorMessage و Issues

يقبل CancellationToken عقد IPdfCancellationToken نفسه الذي تستخدمه الواجهات غير المتزامنة والتقدمية

النماذج والمخططات التفصيلية وتفضيلات العارض

الإخفاق والتراجع

المصدر الذي يخفق بعد أن أدرجت دفعة واحدة أو أكثر صفحات يُتراجع عنه دائمًا إلى حدوده قبل معالجة التوقف أو التخطي

يسجل bmepSkip المشكلة ويواصل مع المصدر التالي، بينما ينهي bmepStop العملية

مع RollbackOnCancelOrFailure=True تزيل إخفاقات التوقف والإلغاء كل الصفحات التي أدرجتها العملية؛ ويُغلق المستند الوجهة الذي أنشأته العملية

مع تعطيل التراجع تبقى المصادر المستوردة بنجاح مُثبَّتة وتنعكس في CommittedPageCount

يزيل التراجع الصفحات المدرجة لكنه لا يستطيع ضمان عكس كل أثر جانبي أصلي في الفهرس مثل البيانات الوصفية للمنتج

التقرير

يكون Status هو bmrsCompleted أو bmrsCompletedWithErrors أو bmrsCancelled أو bmrsFailed

يفصل التقرير المصادر المحاولة والمستوردة والمتخطاة والفاشلة عن الصفحات المستوردة والمثبَّتة والمتراجع عنها

تجعل NativeImportCallCount و LargestNativeImportPageCount و PeakOpenSourceCount سياسة الجدولة المختارة قابلة للقياس

يحتفظ Issues بفهرس المصدر واسم الملف ونص الخطأ للإخفاقات وأخطاء الاستدعاء العكسي النهائية غير المميتة

مثال

var
  Sources: TPdfBatchMergeSources;
  Options: TPdfBatchMergeOptions;
  Report: TPdfBatchMergeReport;
begin
  SetLength(Sources, 2);
  Sources[0] := TPdfBatchMergeSource.FromFile('part-a.pdf', '1-10');
  Sources[1] := TPdfBatchMergeSource.FromFile('part-b.pdf', '3,1', Password);
  Options := TPdfBatchMergeOptions.Default;
  Options.ErrorPolicy := bmepSkip;
  Options.FormPolicy := bmfpFlatten;
  if not Pdf.MergeFiles(Sources, Options, Report) then
    Log(Report.ErrorMessage);
end;

انظر أيضًا

ImportPagesByIndex, ImportPages, التنفيذ غير المتزامن