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 identifikuje jeden souborový PDF zdrojPassword se aplikuje dřív, než se zdroj otevřePageRange je seznam indexovaný od jedničky a oddělený čárkami, například 1,3,5-7PageRange importuje všechny stránky| ErrorPolicy | bmepStop |
| FormPolicy | bmfpPreserveNative |
| OutlinePolicy | bmopDiscard |
| ResourcePolicy | bmrpSourceScoped |
| PageChunkSize | PdfBatchMergeDefaultPageChunkSize, aktuálně 128 stránek |
| InsertAt | -1, což připojí na konec cílového dokumentu |
| CreateDestination | True |
| CopyViewerPreferences | True |
| RollbackOnCancelOrFailure | True |
bmrpSourceScoped provede jednu nativní importní operaci na zdroj a umožní PDFium znovu použít mapu klonovaných objektů napříč všemi vybranými stránkami z toho zdroje
bmrpChunked rozdělí výběr na dávky po PageChunkSize, přináší jemnější body pro zrušení a menší nativní volání na úkor možné duplikace prostředků napříč dávkami
Najednou je otevřen nejvýše jeden zdrojový TPdf a každý zdroj se zavře ihned po jeho pokusu o import
Zrušení se kontroluje mezi zdrojovými operacemi a nativními dávkami; jednotlivé nativní importní volání PDFium přerušit nelze
OnProgress přijímá fáze started, opening, importing, source, rollback, cancellation, failure a completion a může nastavit svůj parametr Cancel; každý snapshot TPdfBatchMergeProgress nese Stage, SourceIndex, SourceCount, FileName, SourcePageCount, ImportedSourceCount, ImportedPageCount a NativeImportCallCount
TPdfBatchMergeReport vrací Status, SourceCount, AttemptedSourceCount, ImportedSourceCount, SkippedSourceCount, FailedSourceCount, ImportedPageCount, CommittedPageCount, RolledBackPageCount, PageCountBefore, PageCountAfter, NativeImportCallCount, LargestNativeImportPageCount, PeakOpenSourceCount, FormSourceCount, OutlineSourceCount, DestinationCreated, ViewerPreferencesSourceIndex, ErrorMessage a Issues
CancellationToken přijímá tutéž smlouvu IPdfCancellationToken, kterou používají asynchronní a progresivní API
bmfpPreserveNative ponechá best-effort import stránek a widgetů od PDFium, ale neřeší konflikty stromu polí AcroForm, polí se stejným názvem, prostředků, výchozího vzhledu ani pořadí výpočtůbmfpFlatten vygeneruje vzhledy a zploští jen vybrané zdrojové stránky před importembmfpReject odmítne zdroje AcroForm a XFAbmopDiscard importuje stránky bez obnovy zdrojové osnovy, zatímco bmopReject odmítne zdroje, které osnovu obsahujíCopyViewerPreferences; ViewerPreferencesSourceIndex zůstává -1, když ten zdroj nemá žádné podporované položkyZdroj, který selže poté, co jedna či více dávek vložilo stránky, se vždy vrátí zpět na hranici zdroje dřív, než se uplatní zastavení nebo přeskočení
bmepSkip zaznamená problém a pokračuje dalším zdrojem, zatímco bmepStop operaci ukončí
S RollbackOnCancelOrFailure=True odstraní selhání se zastavením i zrušení všechny stránky vložené operací; cíl vytvořený operací se zavře
Při zakázaném vracení změn zůstanou úspěšně importované zdroje potvrzené a projeví se v CommittedPageCount
Vrácení změn odstraní vložené stránky, ale nedokáže zaručit inverzi každého nativního vedlejšího efektu v katalogu, například metadat producer
Status je bmrsCompleted, bmrsCompletedWithErrors, bmrsCancelled nebo bmrsFailed
Sestava odděluje pokusné, importované, přeskočené a selhané zdroje od importovaných, potvrzených a vrácených stránek
NativeImportCallCount, LargestNativeImportPageCount a PeakOpenSourceCount dělají zvolenou plánovací politiku měřitelnou
Issues uchovává index zdroje, název souboru a text chyby pro selhání a nefatální chyby terminálního zpětného volání
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;