PDFium Delphi Component Docs

MergeFiles

Komponentas: TPdf  ·  Modulis: PDFium
Sulieja failais paremtus PDF šaltinius per natyviąsias puslapių importo API, ribodama šaltinio rankenas ir atskleisdama aiškias operacijų politikas

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;

Šaltinių parinkimas

Numatytosios parinktys

ErrorPolicybmepStop
FormPolicybmfpPreserveNative
OutlinePolicybmopDiscard
ResourcePolicybmrpSourceScoped
PageChunkSizePdfBatchMergeDefaultPageChunkSize, šiuo metu 128 puslapiai
InsertAt-1, kas prideda į paskirties pabaigą
CreateDestinationTrue
CopyViewerPreferencesTrue
RollbackOnCancelOrFailureTrue

Resursų ir atšaukimo politika

bmrpSourceScoped atlieka po vieną natyvų importą kiekvienam šaltiniui, leisdamas PDFium pakartotinai naudoti savo klonuotų objektų žemėlapį visiems to šaltinio parinktiems puslapiams

bmrpChunked padalija parinktį į PageChunkSize dydžio paketus, duodamas smulkesnius atšaukimo taškus ir mažesnius natyvius kreipinius kainuojant galimam tarppaketinių resursų dubliavimui

Didžiausia vienu metu atvira yra viena šaltinio TPdf, o kiekvienas šaltinis uždaromas iškart po savo importo bandymo

Atšaukimas tikrinamas tarp šaltinių operacijų ir natyviųjų paketų; atskiro PDFium importo kreipinio nutraukti negalima

OnProgress gauna pradžios, atvėrimo, importavimo, šaltinio, atšaukimo, nesėkmės ir užbaigimo etapus ir gali nustatyti savo Cancel parametrą; kiekviena TPdfBatchMergeProgress momentinė kopija neša Stage, SourceIndex, SourceCount, FileName, SourcePageCount, ImportedSourceCount, ImportedPageCount ir NativeImportCallCount

TPdfBatchMergeReport grąžina Status, SourceCount, AttemptedSourceCount, ImportedSourceCount, SkippedSourceCount, FailedSourceCount, ImportedPageCount, CommittedPageCount, RolledBackPageCount, PageCountBefore, PageCountAfter, NativeImportCallCount, LargestNativeImportPageCount, PeakOpenSourceCount, FormSourceCount, OutlineSourceCount, DestinationCreated, ViewerPreferencesSourceIndex, ErrorMessage ir Issues

CancellationToken priima tą patį IPdfCancellationToken kontraktą, kurį naudoja asinchroninės ir progresyviosios API

Formos, struktūros ir peržiūros nuostatos

Nesėkmės ir atšaukimas

Šaltinis, kuris nepavyksta po to, kai vienas ar keli paketai jau įterpė puslapių, visada atšaukiamas iki savo šaltinio ribos prieš sustojimo ar praėjimo apdorojimą

bmepSkip užsirašo problemą ir tęsia su kitu šaltiniu, o bmepStop nutraukia operaciją

Su RollbackOnCancelOrFailure=True sustojimo nesėkmės ir atšaukimas pašalina visus operacijos įterptus puslapius; operacijos sukurtas paskirties dokumentas uždaromas

Išjungus atšaukimą, sėkmingai importuoti šaltiniai lieka įvykdyti ir atsispindi CommittedPageCount

Atšaukimas pašalina įterptus puslapius, bet negarantuoja kiekvieno natyvaus katalogo šalutinio poveikio, pavyzdžiui, gamintojo metaduomenų, atšaukimo

Ataskaita

Status būna bmrsCompleted, bmrsCompletedWithErrors, bmrsCancelled arba bmrsFailed

Ataskaita atskiria bandytus, importuotus, praleistus ir nepavykusius šaltinius nuo importuotų, įvykdytų ir atšauktų puslapių

NativeImportCallCount, LargestNativeImportPageCount ir PeakOpenSourceCount daro pasirinktą tvarkaraščio politiką išmatuojamą

Issues išlaiko šaltinio indeksą, failo vardą ir klaidos tekstą nesėkmėms ir nepamirštoms galutinio atgalinio iškvietimo klaidoms

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, Asinchroninis vykdymas