PDFium Delphi Component Docs

Transaktionell sammanslagning av AcroForm

Lägg till FPdfFormMerge för att aktivera MergePdfFilesWithForms eller TPdfFormMergeHelper.MergeFilesWithForms

Hjälparen mellanlagrar valda sidimporter och fält som ska förenas, tar bort föräldralösa importerade widgets och öppnar det sparade resultatet igen oberoende innan anroparens dokument ersätts; fel och avbrytning bevarar målet

pagcpReject avvisar ett duplicerat fullständigt kvalificerat fältnamn, pagcpRename lägger till ett deterministiskt kollisionsfritt prefix och suffix, och pagcpNamespace infogar ett verkligt föräldrafält för att isolera varje källa

pagcpMergeCompatible förenar kompatibla terminala text- eller valfält så att deras widgets delar ett värde; det kräver lika flaggor, värden, standardvärden, alternativ och självbärande typsnittssemantik, och avvisar fältåtgärder, rich text och inkompatibla fälttyper

Filtrering av valda sidor beskär oanvända widgets och fält och bevarar den filtrerade, avduplicerade beräkningsordningen; standardresurser isoleras och standardutseendenamn skrivs om, medan klonade utseendeströmmar behåller egna resurser

Kombinerade fält/widgets normaliseras innan kompatibla fält förenas; självständiga namn förblir oberoende redigerbara efter sparning och återöppning

InsertAt är ett nollbaserat infogningsindex; -1 lägger till på slutet. Standardgränserna är 10,000 sidor totalt och 256 MiB per dokument, med fältgränser på 100,000 objekt och djup 128

Hårda fältgränser är 1,000,000 objekt, djup 256 och 4,096 rotfält; upprepade valda sidor, XFA-källor eller -mål, signerade källor eller mål och krypterade mål avvisas

Källord kan dekryptera en källa för den mellanlagrade sammanslagningen; resultatet är okrypterat, så tillämpa ett explicit krypteringsarbetsflöde efteråt när det krävs

Den äldre GraftPdfAcroForm-varianten behåller sin avvisningspolicy; varianten som tar TPdfAcroFormGraftOptions exponerar samma kollisions- och resurspolicyer på strömnivå

Denna formulärhjälpare bevarar inte källdispositioner eller namngivna mål; använd navigeringshjälparen för dess deklarerade navigeringsarbetsflöde

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;