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 が 1 つのファイルバックエンド PDF ソースを識別しますPassword はソースを開く前に適用されますPageRange は 1,3,5-7 のような 1 基点のカンマ区切りリストですPageRange はすべてのページをインポートします| ErrorPolicy | bmepStop |
| FormPolicy | bmfpPreserveNative |
| OutlinePolicy | bmopDiscard |
| ResourcePolicy | bmrpSourceScoped |
| PageChunkSize | PdfBatchMergeDefaultPageChunkSize、現在は 128 ページ |
| InsertAt | -1 (宛先の末尾に追加) |
| CreateDestination | True |
| CopyViewerPreferences | True |
| RollbackOnCancelOrFailure | True |
bmrpSourceScoped はソースごとに 1 回のネイティブインポートを実行し、そのソースから選択されたすべてのページに対して PDFium がクローン済みオブジェクトマップを再利用できるようにします
bmrpChunked は選択範囲を PageChunkSize 単位のバッチに分割し、チャンクをまたぐリソースの重複が生じる可能性と引き換えに、より細かいキャンセルポイントと小さなネイティブ呼び出しを提供します
同時に開かれるソース TPdf は最大 1 つで、すべてのソースはインポート試行の直後に閉じられます
キャンセルはソース操作とネイティブバッチの合間にチェックされます。個々の PDFium インポート呼び出しを中断することはできません
OnProgress は開始、オープン、インポート、ソース、ロールバック、キャンセル、失敗、完了の各ステージを受け取り、Cancel パラメータを設定できます。各 TPdfBatchMergeProgress スナップショットは Stage、SourceIndex、SourceCount、FileName、SourcePageCount、ImportedSourceCount、ImportedPageCount、NativeImportCallCount を保持します
TPdfBatchMergeReport は Status、SourceCount、AttemptedSourceCount、ImportedSourceCount、SkippedSourceCount、FailedSourceCount、ImportedPageCount、CommittedPageCount、RolledBackPageCount、PageCountBefore、PageCountAfter、NativeImportCallCount、LargestNativeImportPageCount、PeakOpenSourceCount、FormSourceCount、OutlineSourceCount、DestinationCreated、ViewerPreferencesSourceIndex、ErrorMessage、Issues を返します
CancellationToken は、非同期 API およびプログレッシブ API が使用するのと同じ IPdfCancellationToken 契約を受け付けます
bmfpPreserveNative は PDFium のベストエフォートのページおよびウィジェットインポートを維持しますが、AcroForm のフィールドツリー、同名フィールド、リソース、デフォルト外観、計算順序の競合は解決しませんbmfpFlatten は外観を生成し、選択されたソースページだけをインポート前にフラット化しますbmfpReject は AcroForm および XFA のソースを拒否しますbmopDiscard はソースのアウトラインを再構築せずにページをインポートし、bmopReject はアウトラインを含むソースを拒否しますCopyViewerPreferences が有効な場合、ページインポートの成功後に最初に成功したソースからベストエフォートでコピーされます。そのソースに対応するエントリがない場合、ViewerPreferencesSourceIndex は -1 のままです1 つ以上のチャンクでページを挿入した後に失敗したソースは、停止またはスキップの処理に進む前に、必ずそのソース境界までロールバックされます
bmepSkip は問題を記録して次のソースへ進み、bmepStop は操作を終了します
RollbackOnCancelOrFailure=True の場合、停止につながる失敗とキャンセルは操作が挿入したすべてのページを取り除き、操作が作成した出力先は閉じられます
ロールバックが無効な場合、正常にインポートされたソースはコミット済みのまま残り、CommittedPageCount に反映されます
ロールバックは挿入されたページを取り除きますが、プロデューサーメタデータのようなすべてのネイティブカタログ副作用の逆転を保証することはできません
Status は bmrsCompleted、bmrsCompletedWithErrors、bmrsCancelled、bmrsFailed のいずれかです
レポートは試行、インポート、スキップ、失敗の各ソースを、インポート、コミット、ロールバックの各ページと区別して把握します
NativeImportCallCount、LargestNativeImportPageCount、PeakOpenSourceCount により、選択したスケジューリングポリシーを計測できます
Issues は失敗と致命的でない終端コールバックエラーについて、ソースインデックス、ファイル名、エラーテキストを保持します
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;