PDFium Delphi Component Docs

Transactionele AcroForm-samenvoeging

Voeg FPdfFormMerge toe om MergePdfFilesWithForms of TPdfFormMergeHelper.MergeFilesWithForms beschikbaar te maken

De helper zet geselecteerde pagina-imports en veldtransplantatie klaar, verwijdert wees geworden geïmporteerde widgets en heropent het opgeslagen resultaat onafhankelijk voordat het document van de aanroeper wordt vervangen; fouten en annulering laten het doel onaangetast

pagcpReject verwerpt een dubbele volledig gekwalificeerde veldnaam, pagcpRename voegt een deterministisch botsingsvrij voor- en achtervoegsel toe, en pagcpNamespace plaatst een echt oudererveld ertussen om elke bron te isoleren

pagcpMergeCompatible voegt compatibele tekst- of keuzevelden op eindniveau samen zodat hun widgets één waarde delen; dit vereist gelijke vlaggen, waarden, standaardwaarden, opties en zelfstandige fontsemantiek, en verwerpt veldacties, rich text en incompatibele veldtypen

Filteren op geselecteerde pagina's snoeit ongebruikte widgets en velden weg en behoudt de gefilterde, gededupeerde volgorde van berekeningen; standaardresources worden geïsoleerd en namen van default appearances herschreven, terwijl gekloonde appearance streams hun eigen resources behouden

Gecombineerde veld-widgets worden genormaliseerd voordat compatibele velden worden samengevoegd; zelfstandige namen blijven na opslaan en heropenen zelfstandig bewerkbaar

InsertAt is een op 0 gebaseerde invoegindex; -1 voegt pagina's achteraan toe. Standaardlimieten zijn 10,000 pagina's totaal en 256 MiB per document, met transplantatielimieten van 100,000 objecten en diepte 128

Harde transplantatielimieten zijn 1,000,000 objecten, diepte 256 en 4,096 hoofdvelden; herhaaldelijk geselecteerde pagina's, XFA-bronnen of -doelen, ondertekende bronnen of doelen en versleutelde doelen worden geweigerd

Bronwachtwoorden mogen een bron ontsleutelen voor de klaargezette samenvoeging; het resultaat is onversleuteld, dus pas daarna zo nodig een expliciete versleutelingsworkflow toe

De verouderde overload GraftPdfAcroForm behoudt zijn weigerbeleid; de overload met TPdfAcroFormGraftOptions stelt dezelfde collision- en resource-policies op streamniveau beschikbaar

Deze formulierhelper bewaart geen bronoutlines of named destinations; gebruik de navigatiehelper voor de daar aangegeven navigatiewerkstroom

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

Public declarations

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;