PDFium Component Docs

Transakcyjne scalanie AcroForm

Dodaj FPdfFormMerge, aby włączyć MergePdfFilesWithForms lub TPdfFormMergeHelper.MergeFilesWithForms

Pomocnik etapuje wybrane importy stron i przeszczepianie pól, usuwa osierocone importowane widgety i niezależnie otwiera zapisany wynik przed podmianą dokumentu wywołującego; błędy i anulowanie zachowują dokument docelowy

pagcpReject odrzuca zduplikowaną w pełni kwalifikowaną nazwę pola, pagcpRename dodaje deterministyczny przedrostek i sufiks bez kolizji, a pagcpNamespace wstawia rzeczywiste pole nadrzędne izolujące każde źródło

pagcpMergeCompatible scala zgodne terminalne pola tekstowe lub list, tak aby ich widgety współdzieliły jedną wartość; wymaga równych flag, wartości, wartości domyślnych, opcji i samowystarczalnej semantyki czcionek oraz odrzuca akcje pól, rich text i niezgodne typy pól

Filtrowanie wybranych stron przycina nieużywane widgety i pola oraz zachowuje przefiltrowaną, zdeduplikowaną kolejność obliczeń; zasoby domyślne są izolowane, a nazwy domyślnego wyglądu przepisywane, podczas gdy sklonowane strumienie wyglądu zachowują własne zasoby

Połączone pola/widgety są normalizowane przed scalaniem zgodnych pól; niezależne nazwy pozostają niezależnie edytowalne po zapisie i ponownym otwarciu

InsertAt to indeks wstawienia liczony od zera; -1 dopisuje strony; limity domyślne to 10,000 łącznych stron i 256 MiB na dokument, a limity przeszczepiania to 100,000 obiektów i głębokość 128

Twarde limity przeszczepiania to 1,000,000 obiektów, głębokość 256 i 4,096 pól głównych; powtórzone wybrane strony, źródła lub cele XFA, podpisane źródła lub cele oraz szyfrowane cele są odrzucane

Hasła źródeł mogą odszyfrować źródło na potrzeby etapowanego scalenia; wynik jest nieszyfrowany, więc w razie potrzeby zastosuj potem jawny przepływ szyfrowania

Starsze przeciążenie GraftPdfAcroForm zachowuje politykę odrzucania; przeciążenie przyjmujące TPdfAcroFormGraftOptions udostępnia te same polityki kolizji i zasobów na poziomie strumienia

Ten pomocnik formularzy nie zachowuje zakładek ani nazwanych celów źródła; do zadeklarowanego przepływu nawigacji użyj pomocnika nawigacji

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;