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;
FileName مصدر PDF واحدًا مدعومًا بملفPassword قبل فتح المصدرPageRange قائمة بواحد أساس تفصلها الفواصل مثل 1,3,5-7PageRange الفارغ كل الصفحات| ErrorPolicy | bmepStop |
| FormPolicy | bmfpPreserveNative |
| OutlinePolicy | bmopDiscard |
| ResourcePolicy | bmrpSourceScoped |
| PageChunkSize | PdfBatchMergeDefaultPageChunkSize، وهو حاليًا 128 صفحة |
| InsertAt | -1، أي الإلحاق بالوجهة |
| CreateDestination | True |
| CopyViewerPreferences | True |
| RollbackOnCancelOrFailure | True |
ينفذ 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 نفسه الذي تستخدمه الواجهات غير المتزامنة والتقدمية
bmfpPreserveNative استيراد PDFium للصفحات وعناصر الويدجت بجهده الأفضل، لكنه لا يحل تعارضات AcroForm من شجرة الحقول أو الحقول المتطابقة الاسم أو الموارد أو المظهر الافتراضي أو ترتيب الحسابbmfpFlatten المظاهر ويسطّح الصفحات المصدرية المختارة فقط قبل الاستيرادbmfpReject مصادر AcroForm و XFAbmopDiscard الصفحات دون إعادة بناء مخطط المصدر التفصيلي، بينما يرفض bmopReject المصادر التي تحوي مخططًا تفصيليًاCopyViewerPreferences؛ ويبقى ViewerPreferencesSourceIndex بـ -1 عندما لا يحوي ذلك المصدر مدخلات مدعومةالمصدر الذي يخفق بعد أن أدرجت دفعة واحدة أو أكثر صفحات يُتراجع عنه دائمًا إلى حدوده قبل معالجة التوقف أو التخطي
يسجل 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;