PDFium Delphi Component Docs

MergeFiles

Component: TPdf  ·  Unit: PDFium
Združi datotečno podprte vire PDF prek nativnih API-jev za uvoz strani, pri čemer omejuje ročice virov in izpostavlja izrecne pravilnike delovanja

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, trenutno 128 strani
InsertAt-1, kar pripne na konec cilja
CreateDestinationTrue
CopyViewerPreferencesTrue
RollbackOnCancelOrFailureTrue

Resource and cancellation policy

bmrpSourceScoped izvede en nativni uvoz na vir in PDFiumu omogoči ponovno uporabo zemljevida kloniranih objektov za vse izbrane strani tega vira

bmrpChunked razdeli izbiro na skupine velikosti PageChunkSize, kar nudi finejša preklicna mesta in manjše nativne klice, po ceni morebitnega podvajanja virov med skupinami

Hkrati je odprt največ en vir TPdf in vsak vir se zapre takoj po svojem poskusu uvoza

Preklic se preverja med operacijami vira in nativnimi skupinami; posameznega klica uvoza PDFium ni mogoče prekiniti

OnProgress prejema stopnje začetek, odpiranje, uvažanje, vir, povratna restavracija, preklic, napaka in dokončanje ter lahko nastavi svoj parameter Cancel; vsak posnetek TPdfBatchMergeProgress nosi Stage, SourceIndex, SourceCount, FileName, SourcePageCount, ImportedSourceCount, ImportedPageCount in NativeImportCallCount

TPdfBatchMergeReport vrne Status, SourceCount, AttemptedSourceCount, ImportedSourceCount, SkippedSourceCount, FailedSourceCount, ImportedPageCount, CommittedPageCount, RolledBackPageCount, PageCountBefore, PageCountAfter, NativeImportCallCount, LargestNativeImportPageCount, PeakOpenSourceCount, FormSourceCount, OutlineSourceCount, DestinationCreated, ViewerPreferencesSourceIndex, ErrorMessage in Issues

CancellationToken sprejema isto pogodbo IPdfCancellationToken, ki jo uporabljajo asinhroni in progresivni API-ji

Forms, outlines, and viewer preferences

Failure and rollback

Vir, ki spodleti, ko je po eni ali več skupinah že vstavil strani, se vedno povrne na svojo mejo vira, preden se obravnava ustavitev ali preskok

bmepSkip zabeleži težavo in nadaljuje z naslednjim virom, bmepStop pa konča operacijo

Pri RollbackOnCancelOrFailure=True napake ustavitve in preklic odstranijo vse strani, ki jih je vstavila operacija; cilj, ki ga je ustvarila operacija, se zapre

Brez povratne restavracije uspešno uvoženi viri ostanejo uveljavljeni in se odražajo v CommittedPageCount

Povratna restavracija odstrani vstavljene strani, a ne more zagotoviti povrnitve vsakega stranskega učinka nativnega kataloga, na primer metapodatkov izdelovalca

Report

Status je bmrsCompleted, bmrsCompletedWithErrors, bmrsCancelled ali bmrsFailed

Poročilo loči poskušene, uvožene, preskočene in spodletel vire od uvoženih, uveljavljenih in povrnjenih strani

NativeImportCallCount, LargestNativeImportPageCount in PeakOpenSourceCount naredijo izbrani pravilnik razporejanja merljiv

Issues ohrani indeks vira, ime datoteke in besedilo napake za spodletele vire in neusodne napake povratnih klicev

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, Asinhrono izvajanje