Tilføj FPdfFormMerge for at bruge MergePdfFilesWithForms eller TPdfFormMergeHelper.MergeFilesWithForms
Hjælperen forbereder import af valgte sider og field grafting, fjerner forældreløse importerede widgets og genåbner det gemte resultat uafhængigt, før kalderens dokument erstattes; fejl og cancellation bevarer målet
pagcpReject afviser et dubleret fuldt kvalificeret feltnavn, pagcpRename tilføjer et deterministisk kollisionsfrit præfiks og suffiks, og pagcpNamespace indsætter et rigtigt parent-felt for at isolere hver kilde
pagcpMergeCompatible sammenføjer kompatible terminale tekst- eller choice-felter, så deres widgets deler én værdi; flags, værdier, defaults, options og selvstændig fontsemantik skal være ens, og field actions, rich text og inkompatible felttyper afvises
Filtrering af valgte sider fjerner ubrugte widgets og felter og bevarer filtreret, deduplikeret calculation order; default resources isoleres, og default appearance-navne omskrives, mens klonede appearance-streams beholder egne ressourcer
Kombinerede field/widgets normaliseres før sammenføjning af kompatible felter; uafhængige navne forbliver uafhængigt redigerbare efter gemning og genåbning
InsertAt er et nulbaseret indsættelsesindeks; -1 tilføjer sidst; standardgrænserne er 10,000 sider i alt og 256 MiB pr. dokument med graft-grænser på 100,000 objekter og dybde 128
Hårde graft-grænser er 1,000,000 objekter, dybde 256 og 4,096 rodfelter; gentagne valgte sider, XFA-kilder eller -mål, signerede kilder eller mål og krypterede mål afvises
Kildepasswords kan dekryptere en kilde til den staged merge; resultatet er ukrypteret, så anvend en eksplicit krypteringsarbejdsgang bagefter, hvis det kræves
Den gamle GraftPdfAcroForm-overload bevarer reject-politikken; overloaden med TPdfAcroFormGraftOptions leverer de samme kollisions- og ressourcepolitikker på streamniveau
Denne form-hjælper bevarer ikke kildens outlines eller named destinations; brug navigationshjælperen til dens dokumenterede navigationsarbejdsgang
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;