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);
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;