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 identificerer én filbåren PDF-kildePassword anvendes, før kilden åbnesPageRange er en kommasepareret 1-baseret liste såsom 1,3,5-7PageRange importerer alle sider| ErrorPolicy | bmepStop |
| FormPolicy | bmfpPreserveNative |
| OutlinePolicy | bmopDiscard |
| ResourcePolicy | bmrpSourceScoped |
| PageChunkSize | PdfBatchMergeDefaultPageChunkSize, i øjeblikket 128 sider |
| InsertAt | -1, hvilket føjer til destinationen |
| CreateDestination | True |
| CopyViewerPreferences | True |
| RollbackOnCancelOrFailure | True |
bmrpSourceScoped udfører én native import pr. kilde og lader PDFium genbruge sit cloned-object map på tværs af alle valgte sider fra den kilde
bmrpChunked opdeler udvælgelsen i portioner af PageChunkSize og giver finere aflysningspunkter og mindre native kald på bekostning af mulig duplikering af ressourcer på tværs af portioner
Højst én kilde-TPdf er ad gangen åben, og hver kilde lukkes straks efter sit importforsøg
Aflysning kontrolleres mellem kildeoperationer og native portioner; et enkelt PDFium-importkald kan ikke afbrydes
OnProgress modtager stadierne started, opening, importing, source, rollback, cancellation, failure og completion og kan sætte sin Cancel-parameter; hvert TPdfBatchMergeProgress-snapshot bærer Stage, SourceIndex, SourceCount, FileName, SourcePageCount, ImportedSourceCount, ImportedPageCount og NativeImportCallCount
TPdfBatchMergeReport returnerer Status, SourceCount, AttemptedSourceCount, ImportedSourceCount, SkippedSourceCount, FailedSourceCount, ImportedPageCount, CommittedPageCount, RolledBackPageCount, PageCountBefore, PageCountAfter, NativeImportCallCount, LargestNativeImportPageCount, PeakOpenSourceCount, FormSourceCount, OutlineSourceCount, DestinationCreated, ViewerPreferencesSourceIndex, ErrorMessage og Issues
CancellationToken accepterer samme IPdfCancellationToken-kontrakt, som de asynkrone og progressive API'er bruger
bmfpPreserveNative beholder PDFiums best-effort side- og widget-import men opløser ikke konflikter i AcroForm-felttræ, felter med samme navn, ressourcer, standardudseende eller beregningsrækkefølgebmfpFlatten genererer appearances og flattener kun de valgte kildesider før importbmfpReject afviser AcroForm- og XFA-kilderbmopDiscard importerer sider uden at genopbygge kildens outline, mens bmopReject afviser kilder, der indeholder en outlineCopyViewerPreferences er slået til; ViewerPreferencesSourceIndex forbliver -1, når den kilde ikke har understøttede entriesEn kilde, der fejler, efter at én eller flere portioner har indsat sider, rulles altid tilbage til sin kildegrænse, før stop- eller skip-håndteringen
bmepSkip noterer problemet og fortsætter med den næste kilde, mens bmepStop afslutter operationen
Med RollbackOnCancelOrFailure=True fjerner stop-fejl og aflysning alle sider, som operationen indsatte; en destination, som operationen oprettede, lukkes
Med rollback slået fra forbliver succesfuldt importerede kilder committet og afspejles i CommittedPageCount
Rollback fjerner de indsatte sider men kan ikke garantere, at alle native katalog-bivirkninger såsom producer-metadata omgøres
Status er bmrsCompleted, bmrsCompletedWithErrors, bmrsCancelled eller bmrsFailed
Rapporten adskiller forsøgte, importerede, sprun over og fejlede kilder fra importerede, committede og tilbagerullede sider
NativeImportCallCount, LargestNativeImportPageCount og PeakOpenSourceCount gør den valgte skeduleringspolitik målbar
Issues gemmer kildeindeks, filnavn og fejltekst for fejl og ikke-fatale terminal-callback-fejl
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;