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 identifică o sursă PDF susținută de fișierPassword este aplicată înainte ca sursa să fie deschisăPageRange este o listă separată prin virgule, cu numerotare de la 1, precum 1,3,5-7PageRange gol importă toate paginile| ErrorPolicy | bmepStop |
| FormPolicy | bmfpPreserveNative |
| OutlinePolicy | bmopDiscard |
| ResourcePolicy | bmrpSourceScoped |
| PageChunkSize | PdfBatchMergeDefaultPageChunkSize, în prezent 128 de pagini |
| InsertAt | -1, ceea ce adaugă la finalul destinației |
| CreateDestination | True |
| CopyViewerPreferences | True |
| RollbackOnCancelOrFailure | True |
bmrpSourceScoped efectuează un singur import nativ per sursă, lăsând PDFium să își reutilizeze harta de obiecte clonate pe toate paginile selectate din acea sursă
bmrpChunked împarte selecția în loturi de PageChunkSize, oferind puncte de anulare mai fine și apeluri native mai mici, cu prețul unei posibile duplicări de resurse între loturi
Cel mult o sursă TPdf este deschisă la un moment dat, iar fiecare sursă este închisă imediat după încercarea sa de import
Anularea este verificată între operațiile pe surse și loturile native; un apel individual de import PDFium nu poate fi întrerupt
OnProgress primește etapele started, opening, importing, source, rollback, cancellation, failure și completion și își poate stabili parametrul Cancel; fiecare instantaneu TPdfBatchMergeProgress poartă Stage, SourceIndex, SourceCount, FileName, SourcePageCount, ImportedSourceCount, ImportedPageCount și NativeImportCallCount
TPdfBatchMergeReport returnează Status, SourceCount, AttemptedSourceCount, ImportedSourceCount, SkippedSourceCount, FailedSourceCount, ImportedPageCount, CommittedPageCount, RolledBackPageCount, PageCountBefore, PageCountAfter, NativeImportCallCount, LargestNativeImportPageCount, PeakOpenSourceCount, FormSourceCount, OutlineSourceCount, DestinationCreated, ViewerPreferencesSourceIndex, ErrorMessage și Issues
CancellationToken acceptă același contract IPdfCancellationToken folosit de API-urile asincrone și progresive
bmfpPreserveNative păstrează importul de pagini și widgeturi făcut de PDFium din betiv, dar nu rezolvă conflictele de arbore de câmpuri AcroForm, de câmpuri cu același nume, de resurse, de aspect implicit sau de ordine de calculbmfpFlatten generează aparențe și aplatizează doar paginile sursă selectate înainte de importbmfpReject respinge sursele AcroForm și XFAbmopDiscard importă paginile fără a reconstrui outline-ul sursei, în timp ce bmopReject respinge sursele care conțin un outlineCopyViewerPreferences este activat; ViewerPreferencesSourceIndex rămâne -1 când acea sursă nu are intrări suportateO sursă care eșuează după ce unul sau mai multe loturi i-au inserat pagini este întotdeauna adusă înapoi la granița sa de sursă înainte de tratarea opririi sau a săririi peste ea
bmepSkip înregistrează problema și continuă cu sursa următoare, în timp ce bmepStop termină operația
Cu RollbackOnCancelOrFailure=True, eșecurile cu oprire și anularea elimină toate paginile inserate de operație; o destinație creată de operație este închisă
Cu rollback dezactivat, sursele importate cu succes rămân comise și se reflectă în CommittedPageCount
Rollback-ul elimină paginile inserate, dar nu poate garanta inversarea fiecărui efect secundar nativ al catalogului, precum metadatele de producător
Status este bmrsCompleted, bmrsCompletedWithErrors, bmrsCancelled sau bmrsFailed
Raportul separă sursele încercate, importate, sărite și eșuate de paginile importate, comise și aduse înapoi
NativeImportCallCount, LargestNativeImportPageCount și PeakOpenSourceCount fac măsurabila politica de planificare aleasă
Issues păstrează indexul sursei, numele fișierului și textul erorii pentru eșecuri și pentru erorile nefatale de callback terminal
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;