PDFium Delphi Component Docs

Fusion transactionnelle des AcroForm

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);

Déclarations publiques

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;