FPdfFormMerge を追加すると MergePdfFilesWithForms または TPdfFormMergeHelper.MergeFilesWithForms を使えます
ヘルパーは選択ページのインポートとフィールド移植を準備し、親を失ったインポート済みウィジェットを削除します。保存結果を別途開いてから呼び出し元の文書を置き換えるため、エラーやキャンセル時は出力先を保持します
pagcpReject は完全修飾フィールド名の重複を拒否し、pagcpRename は決定的で衝突しない接頭辞と接尾辞を付けます。pagcpNamespace は実際の親フィールドを挿入してソースごとに分離します
pagcpMergeCompatible は互換性のある末端のテキスト/選択フィールドを結合し、ウィジェットで値を共有します。flags、値、既定値、選択肢、独立したフォントの意味が同じである必要があり、フィールドのアクション、rich text、非互換のフィールド型は拒否します
選択ページによる絞り込みで不要なウィジェットとフィールドを削除し、絞り込みと重複除去後の計算順序を保持します。既定リソースを分離して既定外観の名前を書き換え、複製した外観ストリームはそれぞれのリソースを保持します
フィールドとウィジェットが一体の辞書は、互換フィールドの結合前に正規化します。独立した名前は保存して開き直した後も個別に編集できます
InsertAt は 0 始まりの挿入位置で、-1 は末尾に追加します。既定の上限は合計 10,000 ページ、文書ごとに 256 MiB、移植は 100,000 オブジェクトと深さ 128 です
移植のハード上限は 1,000,000 オブジェクト、深さ 256、ルートフィールド 4,096 個です。選択ページの重複、ソースまたは出力先の XFA や署名、暗号化された出力先は拒否します
ソースのパスワードで準備中の結合用に復号できます。結果は暗号化されないので、必要に応じてその後に明示的な暗号化処理を行ってください
従来の GraftPdfAcroForm オーバーロードは拒否ポリシーを維持します。TPdfAcroFormGraftOptions を受け取るオーバーロードは、同じ衝突/リソースポリシーをストリーム単位で公開します
このフォームヘルパーはソースの outline や名前付き宛先を保持しません。宣言されたナビゲーション処理にはナビゲーションヘルパーを使ってください
Options := TPdfFormMergeOptions.Default; Options.GraftOptions.CollisionPolicy := pagcpNamespace; if not MergePdfFilesWithForms(Pdf, Sources, Options, Report) then raise EPdfError.Create(Report.ErrorMessage);
type
TPdfFormMergeOptions= record
GraftOptions: TPdfAcroFormGraftOptions;
InsertAt: Integer;
MaxPages: Integer;
MaxDocumentBytes: Int64;
CancellationToken: IPdfCancellationToken;
class function Default: TPdfFormMergeOptions; static;
end;
TPdfFormMergeReport= record
Succeeded, Cancelled: Boolean;
ImportedSourceCount, ImportedPageCount: Integer;
GraftedFieldCount, RenamedFieldCount, MergedFieldCount: Integer;
FilteredFieldCount, FilteredWidgetCount, ResourceRenameCount: Integer;
ErrorMessage: string;
end;
function MergePdfFilesWithForms(Destination: TPdf;
const Sources: TPdfBatchMergeSources; const Options: TPdfFormMergeOptions;
out Report: TPdfFormMergeReport): Boolean;
type
TPdfFormMergeHelper= class helper for TPdf
function MergeFilesWithForms(const Sources: TPdfBatchMergeSources;
const Options: TPdfFormMergeOptions;
out Report: TPdfFormMergeReport): Boolean;
end;