Ajoutez FPdfFormMerge pour utiliser MergePdfFilesWithForms ou TPdfFormMergeHelper.MergeFilesWithForms
Le helper prépare l’importation des pages sélectionnées et la greffe des champs, supprime les widgets importés devenus orphelins, puis rouvre indépendamment le résultat enregistré avant de remplacer le document appelant ; une erreur ou une annulation préserve la destination
pagcpReject refuse les noms de champ pleinement qualifiés en double, pagcpRename ajoute un préfixe et un suffixe déterministes sans collision, et pagcpNamespace insère un véritable champ parent pour isoler chaque source
pagcpMergeCompatible réunit les champs terminaux de texte ou de choix compatibles afin que leurs widgets partagent une valeur ; les indicateurs, valeurs, valeurs par défaut, options et définitions de police autonomes doivent être identiques ; les actions de champ, le texte enrichi et les types incompatibles sont refusés
Le filtrage des pages élimine les widgets et champs inutilisés et conserve l’ordre de calcul filtré, sans doublons ; les ressources par défaut sont isolées et les noms des apparences par défaut réécrits, tandis que les flux d’apparence clonés conservent leurs propres ressources
Les objets combinant champ et widget sont normalisés avant la réunion des champs compatibles ; après enregistrement et réouverture, les champs portant des noms indépendants restent modifiables séparément
InsertAt est un indice d’insertion commençant à zéro ; -1 ajoute les pages à la fin ; les limites par défaut sont de 10,000 pages au total et 256 MiB par document, avec 100,000 objets greffés et une profondeur de 128
Les plafonds de greffe sont de 1,000,000 objets, une profondeur de 256 et 4,096 champs racines ; les pages sélectionnées répétées, les sources ou destinations XFA ou signées et les destinations chiffrées sont refusées
Les mots de passe source permettent de déchiffrer un document pour préparer la fusion ; le résultat n’est pas chiffré, appliquez ensuite explicitement votre procédure de chiffrement si nécessaire
L’ancienne surcharge de GraftPdfAcroForm conserve sa politique de refus ; celle qui accepte TPdfAcroFormGraftOptions expose les mêmes politiques de collision et de ressources pour les flux
Ce helper de formulaire ne conserve ni les signets ni les destinations nommées des sources ; utilisez le helper de navigation pour le traitement qu’il prend en charge
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;