Lägg till FPdfFormMerge för att aktivera MergePdfFilesWithForms eller TPdfFormMergeHelper.MergeFilesWithForms
Hjälparen mellanlagrar valda sidimporter och fält som ska förenas, tar bort föräldralösa importerade widgets och öppnar det sparade resultatet igen oberoende innan anroparens dokument ersätts; fel och avbrytning bevarar målet
pagcpReject avvisar ett duplicerat fullständigt kvalificerat fältnamn, pagcpRename lägger till ett deterministiskt kollisionsfritt prefix och suffix, och pagcpNamespace infogar ett verkligt föräldrafält för att isolera varje källa
pagcpMergeCompatible förenar kompatibla terminala text- eller valfält så att deras widgets delar ett värde; det kräver lika flaggor, värden, standardvärden, alternativ och självbärande typsnittssemantik, och avvisar fältåtgärder, rich text och inkompatibla fälttyper
Filtrering av valda sidor beskär oanvända widgets och fält och bevarar den filtrerade, avduplicerade beräkningsordningen; standardresurser isoleras och standardutseendenamn skrivs om, medan klonade utseendeströmmar behåller egna resurser
Kombinerade fält/widgets normaliseras innan kompatibla fält förenas; självständiga namn förblir oberoende redigerbara efter sparning och återöppning
InsertAt är ett nollbaserat infogningsindex; -1 lägger till på slutet. Standardgränserna är 10,000 sidor totalt och 256 MiB per dokument, med fältgränser på 100,000 objekt och djup 128
Hårda fältgränser är 1,000,000 objekt, djup 256 och 4,096 rotfält; upprepade valda sidor, XFA-källor eller -mål, signerade källor eller mål och krypterade mål avvisas
Källord kan dekryptera en källa för den mellanlagrade sammanslagningen; resultatet är okrypterat, så tillämpa ett explicit krypteringsarbetsflöde efteråt när det krävs
Den äldre GraftPdfAcroForm-varianten behåller sin avvisningspolicy; varianten som tar TPdfAcroFormGraftOptions exponerar samma kollisions- och resurspolicyer på strömnivå
Denna formulärhjälpare bevarar inte källdispositioner eller namngivna mål; använd navigeringshjälparen för dess deklarerade navigeringsarbetsflöde
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;