PDFium Delphi Component Docs

Fusión transaccional de AcroForm

Añada FPdfFormMerge para utilizar MergePdfFilesWithForms o TPdfFormMergeHelper.MergeFilesWithForms

El helper prepara la importación de páginas seleccionadas y el injerto de campos, elimina widgets importados huérfanos y reabre de forma independiente el resultado guardado antes de sustituir el documento del llamador; errores y cancelación preservan el destino

pagcpReject rechaza un nombre de campo totalmente cualificado duplicado, pagcpRename añade prefijo y sufijo deterministas sin colisiones, y pagcpNamespace inserta un campo padre real para aislar cada origen

pagcpMergeCompatible une campos terminales de texto o selección compatibles para que sus widgets compartan un valor; requiere flags, valores, defaults, opciones y semántica de fuentes autocontenida iguales y rechaza acciones de campo, rich text y tipos incompatibles

El filtrado por páginas elimina widgets y campos sin usar y conserva el orden de cálculo filtrado y deduplicado; los recursos predeterminados se aíslan y sus nombres de apariencia se reescriben, mientras que los flujos de apariencia clonados conservan sus recursos

Los field/widgets combinados se normalizan antes de unir campos compatibles; los nombres independientes siguen siendo editables por separado tras guardar y reabrir

InsertAt es un índice de inserción con base cero; -1 añade al final; los límites predeterminados son 10,000 páginas totales y 256 MiB por documento, con límites de injerto de 100,000 objetos y profundidad 128

Los límites estrictos de injerto son 1,000,000 objetos, profundidad 256 y 4,096 campos raíz; se rechazan páginas seleccionadas repetidas, orígenes o destinos XFA o firmados y destinos cifrados

Las contraseñas de origen pueden descifrar un origen para el merge preparado; el resultado queda sin cifrar, así que aplique después un flujo de cifrado explícito si hace falta

La sobrecarga anterior de GraftPdfAcroForm conserva la política de rechazo; la que acepta TPdfAcroFormGraftOptions expone las mismas políticas de colisión y recursos a nivel de flujo

Este helper de formularios no conserva outlines ni named destinations del origen; utilice el helper de navegación para su flujo documentado

Options := TPdfFormMergeOptions.Default;
Options.GraftOptions.CollisionPolicy := pagcpNamespace;
if not MergePdfFilesWithForms(Pdf, Sources, Options, Report) then
  raise EPdfError.Create(Report.ErrorMessage);

Declaraciones públicas

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;