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, розділений комами, наприклад 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 отримує стадії started, opening, importing, source, rollback, cancellation, failure і completion та може встановити свій параметр 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, що його використовують асинхронні та прогресивні API
bmfpPreserveNative лишає найкращий намагання PDFium імпорт сторінок і віджетів, але не розв’язує конфлікти дерева полів AcroForm, однакових назв полів, ресурсів, типового вигляду чи порядку обчисленьbmfpFlatten генерує вигляди та сплощує лише вибрані сторінки джерела перед імпортомbmfpReject відхиляє джерела з AcroForm і XFAbmopDiscard імпортує сторінки без перебудови змісту джерела, тоді як bmopReject відхиляє джерела, які містять змістCopyViewerPreferences увімкнено; ViewerPreferencesSourceIndex залишається -1, коли в того джерела немає підтримуваних записівДжерело, яке зазнало невдачі після вставлення однієї або кількох партій сторінок, завжди відкочується до межі свого джерела перед обробкою stop або skip
bmepSkip записує проблему та продовжує з наступним джерелом, тоді як bmepStop завершує операцію
З RollbackOnCancelOrFailure=True збої stop і скасування видаляють усі сторінки, вставлені операцією; цільовий документ, створений операцією, закривається
З вимкненим відкочуванням успішно імпортовані джерела залишаються зафіксованими та відображаються в CommittedPageCount
Відкочування видаляє вставлені сторінки, але не може гарантувати скасування кожного нативного побічного ефекту каталогу, як-от метадані producer
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;