PDFium Delphi Component Docs

Transaktionel AcroForm-merge

Tilføj FPdfFormMerge for at bruge MergePdfFilesWithForms eller TPdfFormMergeHelper.MergeFilesWithForms

Hjælperen forbereder import af valgte sider og field grafting, fjerner forældreløse importerede widgets og genåbner det gemte resultat uafhængigt, før kalderens dokument erstattes; fejl og cancellation bevarer målet

pagcpReject afviser et dubleret fuldt kvalificeret feltnavn, pagcpRename tilføjer et deterministisk kollisionsfrit præfiks og suffiks, og pagcpNamespace indsætter et rigtigt parent-felt for at isolere hver kilde

pagcpMergeCompatible sammenføjer kompatible terminale tekst- eller choice-felter, så deres widgets deler én værdi; flags, værdier, defaults, options og selvstændig fontsemantik skal være ens, og field actions, rich text og inkompatible felttyper afvises

Filtrering af valgte sider fjerner ubrugte widgets og felter og bevarer filtreret, deduplikeret calculation order; default resources isoleres, og default appearance-navne omskrives, mens klonede appearance-streams beholder egne ressourcer

Kombinerede field/widgets normaliseres før sammenføjning af kompatible felter; uafhængige navne forbliver uafhængigt redigerbare efter gemning og genåbning

InsertAt er et nulbaseret indsættelsesindeks; -1 tilføjer sidst; standardgrænserne er 10,000 sider i alt og 256 MiB pr. dokument med graft-grænser på 100,000 objekter og dybde 128

Hårde graft-grænser er 1,000,000 objekter, dybde 256 og 4,096 rodfelter; gentagne valgte sider, XFA-kilder eller -mål, signerede kilder eller mål og krypterede mål afvises

Kildepasswords kan dekryptere en kilde til den staged merge; resultatet er ukrypteret, så anvend en eksplicit krypteringsarbejdsgang bagefter, hvis det kræves

Den gamle GraftPdfAcroForm-overload bevarer reject-politikken; overloaden med TPdfAcroFormGraftOptions leverer de samme kollisions- og ressourcepolitikker på streamniveau

Denne form-hjælper bevarer ikke kildens outlines eller named destinations; brug navigationshjælperen til dens dokumenterede navigationsarbejdsgang

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

Offentlige deklarationer

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;