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