PDFium Delphi Component Docs

Transakční slučování AcroForm

Přidejte FPdfFormMerge, chcete-li používat MergePdfFilesWithForms nebo TPdfFormMergeHelper.MergeFilesWithForms

Helper připraví import vybraných stránek a grafting polí, odstraní osiřelé importované widgety a nezávisle znovu otevře uložený výsledek před náhradou dokumentu volajícího; chyby a zrušení zachovají cíl

pagcpReject odmítá duplicitní plně kvalifikovaný název pole, pagcpRename přidává deterministický prefix a suffix bez kolizí a pagcpNamespace vkládá skutečné rodičovské pole pro izolaci každého zdroje

pagcpMergeCompatible spojuje kompatibilní koncová textová nebo výběrová pole, aby jejich widgety sdílely jednu hodnotu; vyžaduje shodné příznaky, hodnoty, výchozí hodnoty, volby a samostatnou sémantiku písem a odmítá akce polí, rich text a nekompatibilní typy polí

Filtrování vybraných stránek prořeže nepoužívané widgety a pole a zachová filtrované, deduplikované pořadí výpočtů; výchozí prostředky se izolují a názvy výchozího appearance přepíšou, zatímco klonované appearance streamy zachovají vlastní prostředky

Kombinovaná pole/widgety se před spojením kompatibilních polí normalizují; nezávislé názvy zůstanou samostatně editovatelné i po uložení a opětovném otevření

InsertAt je index vložení od nuly; -1 připojuje stránky na konec. Výchozí limity jsou celkem 10,000 stránek a 256 MiB na dokument, grafting má limity 100,000 objektů a hloubku 128

Pevné limity graftingu jsou 1,000,000 objektů, hloubka 256 a 4,096 kořenových polí; opakované vybrané stránky, zdroje či cíle XFA, podepsané zdroje či cíle a šifrované cíle se odmítají

Zdrojová hesla mohou dešifrovat zdroj pro připravované sloučení; výsledek je nešifrovaný, takže podle potřeby následně spusťte explicitní workflow šifrování

Původní overload GraftPdfAcroForm zachovává pravidlo odmítnutí; overload s TPdfAcroFormGraftOptions zpřístupňuje stejná pravidla kolizí a prostředků na úrovni streamu

Tento helper formulářů nezachovává zdrojové outline ani pojmenované cíle; pro deklarované workflow navigace použijte navigační helper

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

Veřejné deklarace

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;