Aggiungere FPdfFormMerge per abilitare MergePdfFilesWithForms o TPdfFormMergeHelper.MergeFilesWithForms
L'helper prepara importazione delle pagine selezionate e innesto dei campi, elimina i widget importati rimasti orfani e riapre indipendentemente il risultato salvato prima di sostituire il documento del chiamante; errori e annullamento mantengono la destinazione
pagcpReject rifiuta nomi di campo completi duplicati, pagcpRename aggiunge prefisso e suffisso deterministici senza collisioni e pagcpNamespace inserisce un vero campo padre per isolare ogni sorgente
pagcpMergeCompatible unisce campi terminali di testo o scelta compatibili, affinché i widget condividano un valore; richiede flag, valori, valori predefiniti, opzioni e semantica dei font autonoma identici e rifiuta azioni dei campi, rich text e tipi incompatibili
Il filtro delle pagine selezionate elimina widget e campi inutilizzati e mantiene l'ordine di calcolo filtrato e senza duplicati; le risorse predefinite sono isolate e i nomi nell'aspetto predefinito riscritti, mentre gli stream di aspetto clonati conservano le proprie risorse
I campi combinati con widget vengono normalizzati prima di unire campi compatibili; i nomi indipendenti restano modificabili separatamente dopo salvataggio e riapertura
InsertAt è un indice di inserimento a base zero; -1 aggiunge in coda. I limiti predefiniti sono 10,000 pagine totali e 256 MiB per documento, con limiti di innesto di 100,000 oggetti e profondità 128
I limiti rigidi di innesto sono 1,000,000 oggetti, profondità 256 e 4,096 campi radice; vengono rifiutati pagine selezionate ripetute, sorgenti o destinazioni XFA, sorgenti o destinazioni firmate e destinazioni cifrate
Le password sorgente possono decifrare un documento per l'unione preparata; il risultato non è cifrato, quindi applicare poi un flusso di cifratura esplicito se necessario
L'overload storico di GraftPdfAcroForm mantiene la politica di rifiuto; l'overload con TPdfAcroFormGraftOptions espone le stesse politiche di collisione e risorse a livello di stream
Questo helper dei form non mantiene outline o destinazioni nominate delle sorgenti; usare l'helper di navigazione per il relativo flusso documentato
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;