PDFium Delphi Component Docs

MergeFiles

Komponent: TPdf  ·  Enhed: PDFium
Fletter filbårne PDF-kilder gennem native sideimport-API'er, mens kildehandles afgrænses, og eksplicitte operationspolitikker eksponeres

Syntax

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;

Source selection

Default options

ErrorPolicybmepStop
FormPolicybmfpPreserveNative
OutlinePolicybmopDiscard
ResourcePolicybmrpSourceScoped
PageChunkSizePdfBatchMergeDefaultPageChunkSize, i øjeblikket 128 sider
InsertAt-1, hvilket føjer til destinationen
CreateDestinationTrue
CopyViewerPreferencesTrue
RollbackOnCancelOrFailureTrue

Resource and cancellation policy

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

Forms, outlines, and viewer preferences

Failure and rollback

En 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

Report

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

Example

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;

See Also

ImportPagesByIndex, ImportPages, Asynchronous execution