PDFium Delphi Component Docs

Combinación transaccional de AcroForm

Agregue FPdfFormMerge para habilitar MergePdfFilesWithForms o TPdfFormMergeHelper.MergeFilesWithForms

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

pagcpReject rechaza nombres completos de campo duplicados, pagcpRename agrega un prefijo y un 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; exige los mismos flags, valores, valores predeterminados, opciones y una semántica de fuentes autosuficiente, y rechaza acciones de campo, texto enriquecido y tipos de campo incompatibles

El filtrado por páginas seleccionadas elimina widgets y campos sin uso, y conserva el orden de cálculo filtrado y sin duplicados; los recursos predeterminados se aíslan y se reescriben los nombres de apariencia predeterminada, mientras que los flujos de apariencia clonados mantienen sus propios recursos

Los campos y widgets combinados se normalizan antes de unir campos compatibles; los nombres independientes siguen siendo editables por separado después de guardar y reabrir

InsertAt es un índice de inserción con base cero; -1 agrega páginas 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 absolutos 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, orígenes o destinos firmados y destinos cifrados

Las contraseñas de origen pueden descifrar un documento para la combinación preparada; el resultado queda sin cifrar, por lo que, si hace falta, se debe aplicar después un flujo de cifrado explícito

La sobrecarga antigua de GraftPdfAcroForm conserva su 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 los marcadores ni los destinos con nombre del origen; para ese flujo de navegación, use el helper de navegación

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;