PDFium Delphi Component Docs

MergeFiles

Component: TPdf  ·  Unit: PDFium
Spaja PDF izvore zasnovane na fajlovima kroz izvorne API-je uvoza strana, uz ograničene rukovaoce i eksplicitne politike operacije

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 strana
InsertAt-1, što dodaje na kraj odredišta
CreateDestinationTrue
CopyViewerPreferencesTrue
RollbackOnCancelOrFailureTrue

Resource and cancellation policy

bmrpSourceScoped izvršava jedan izvorni uvoz po izvoru, čime PDFium može da ponovo koristi svoju mapu kloniranih objekata za sve izabrane strane tog izvora

bmrpChunked deli izbor na serije od PageChunkSize strana, dajući finije tačke otkazivanja i manje izvorne pozive po cenu mogućeg udvostručavanja resursa između serija

Najviše jedan izvorni TPdf je otvoren u datom trenutku i svaki izvor se zatvara odmah nakon pokušaja uvoza

Otkazivanje se proverava između operacija nad izvorima i izvornih serija; pojedinačni izvorni poziv uvoza ne može da se prekine

OnProgress prima faze started, opening, importing, source, rollback, cancellation, failure i completion i može da postavi svoj parametar Cancel; svaki snimak TPdfBatchMergeProgress nosi Stage, SourceIndex, SourceCount, FileName, SourcePageCount, ImportedSourceCount, ImportedPageCount i NativeImportCallCount

TPdfBatchMergeReport vraća Status, SourceCount, AttemptedSourceCount, ImportedSourceCount, SkippedSourceCount, FailedSourceCount, ImportedPageCount, CommittedPageCount, RolledBackPageCount, PageCountBefore, PageCountAfter, NativeImportCallCount, LargestNativeImportPageCount, PeakOpenSourceCount, FormSourceCount, OutlineSourceCount, DestinationCreated, ViewerPreferencesSourceIndex, ErrorMessage i Issues

CancellationToken prihvata isti IPdfCancellationToken ugovor koji koriste asinhroni i progresivni API-ji

Forms, outlines, and viewer preferences

Failure and rollback

Izvor kod kojeg dođe do neuspeha nakon što je jedna ili više serija ubacilo strane uvek se vraća na granicu svog izvora pre postupanja po stop ili skip pravilu

bmepSkip beleži problem i nastavlja sa sledećim izvorom, dok bmepStop prekida operaciju

Sa RollbackOnCancelOrFailure=True, neuspesi sa stop pravilom i otkazivanje uklanjaju sve strane koje je operacija ubacila; odredište koje je operacija kreirala se zatvara

Kada je vraćanje isključeno, uspešno uvezeni izvori ostaju potvrđeni i ogledaju se u CommittedPageCount

Vraćanje uklanja ubačene strane, ali ne može da garantuje opoziv svakog izvornog sporednog efekta u katalogu, poput metapodataka o producer-u

Report

Status je bmrsCompleted, bmrsCompletedWithErrors, bmrsCancelled ili bmrsFailed

Izveštaj razdvaja pokušane, uvezene, preskočene i neuspele izvore od uvezenih, potvrđenih i vraćenih strana

NativeImportCallCount, LargestNativeImportPageCount i PeakOpenSourceCount čine izabranu politiku zakazivanja merljivom

Issues zadržava indeks izvora, ime fajla i tekst greške za neuspehe i nefatalne završne greške callback-ova

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