PDFium Delphi Component Docs

Merge transacional de AcroForm

Adicione FPdfFormMerge para habilitar MergePdfFilesWithForms ou TPdfFormMergeHelper.MergeFilesWithForms

O helper prepara as importações de páginas selecionadas e o enxerto de campos, remove widgets importados órfãos e reabre de forma independente o resultado salvo antes de substituir o documento de quem chama; erros e cancelamento preservam o destino

pagcpReject rejeita um nome de campo totalmente qualificado duplicado, pagcpRename adiciona um prefixo e sufixo determinístico livre de colisões, e pagcpNamespace insere um campo pai real para isolar cada origem

pagcpMergeCompatible une campos terminais compatíveis de texto ou de escolha para que seus widgets compartilhem um único valor; ele exige flags, valores, padrões, opções e semântica de fonte autocontida iguais, e rejeita ações de campo, rich text e tipos de campo incompatíveis

A filtragem de páginas selecionadas remove widgets e campos não usados e preserva a ordem de cálculo filtrada e deduplicada; os recursos padrão são isolados e os nomes de aparência padrão reescritos, enquanto os streams de aparência clonados mantêm seus próprios recursos

Os campos/widgets combinados são normalizados antes de unir campos compatíveis; nomes independentes continuam editáveis de forma independente após salvar e reabrir

InsertAt é um índice de inserção de base zero; -1 anexa as páginas; os limites padrão são 10,000 páginas no total e 256 MiB por documento, com limites de enxerto de 100,000 objetos e profundidade 128

Os limites rígidos de enxerto são 1,000,000 de objetos, profundidade 256 e 4,096 campos raiz; páginas selecionadas repetidas, origens ou destinos XFA, origens ou destinos assinados e destinos criptografados são rejeitados

Senhas de origem podem descriptografar uma origem para o merge preparado; o resultado não é criptografado, então aplique depois um fluxo de trabalho explícito de criptografia quando necessário

O overload legado GraftPdfAcroForm mantém sua política de rejeição; o overload que aceita TPdfAcroFormGraftOptions expõe as mesmas políticas de colisão e de recursos no nível de stream

Este helper de formulários não preserva outlines nem named destinations da origem; use o helper de navegação para o fluxo de navegação que ele declara

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

Declarações 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;