THPDFWindowsFormDataTransaction

HPDFWindowsFormData poskytuje Windows most z aktuálního grafu THotPDF do nativního autentizovaného engine FDF/XFDF

Deklarace

constructor Create(Document: THotPDF; OriginalSource: TStream;
  const Password: AnsiString; const Limits: THPDFWindowsFormDataLimits;
  Checkpoint: TNotifyEvent = nil);
procedure SetSignaturePolicyOptions(const Options: THPDFHeadlessCMSOptions);
function ExportData(Format: THPDFHeadlessFormDataFormat;
  const Options: THPDFHeadlessFormDataOptions): TBytes;
procedure ImportData(const Bytes: TBytes; Format: THPDFHeadlessFormDataFormat;
  const Fonts: THPDFHeadlessRichTextFonts;
  const AppearanceOptions: THPDFHeadlessTextAppearanceOptions;
  const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
procedure ImportDataWithFamilies(const Bytes: TBytes;
  Format: THPDFHeadlessFormDataFormat; const Families: THPDFHeadlessRichTextFontFamilies;
  const AppearanceOptions: THPDFHeadlessTextAppearanceOptions;
  const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
procedure FillTypedData(const Updates: THPDFHeadlessRichTextFieldUpdates;
  const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
function ExportAnnotations(const Options: THPDFHeadlessXFDFOptions;
  out Bytes: SysUtils.TBytes): THPDFHeadlessXFDFExportResult;
procedure ImportAnnotations(const Bytes: SysUtils.TBytes;
  const Options: THPDFHeadlessXFDFOptions; const Password: AnsiString);
property ChangedAnnotations: Integer;
function PreparedFieldCount: Integer;
procedure GetPreparedField(Index: Integer; out Name, Value: UnicodeString;
  out FieldType: Integer);
procedure WritePreparedPDF(Destination: TStream);
procedure TakeCandidate(out Document: THotPDF;
  out Source: THPDFWindowsFormDataSource);
property ChangedFields: Integer;
property CancellationToken: THPDFCancellationToken;

Vlastnictví a politika

Document, OriginalSource i Checkpoint jsou vypůjčené až do zničení; OriginalSource se musí přesně shodovat s načtenou původní revizí dokumentu; konstruktor zkopíruje a zapečetí soukromý původní zdroj, autentizuje jeho AES přihlašovací údaje a připraví skutečný čekající graf v jiném soukromém zdroji

Nativní engine zkontroluje stávající integritu podpisů i vazbu ESS certifikátu, oprávnění DocMDP, zámky FieldMDP i příznaky read-only polí; povolené aktualizace P2/P3 zregenerují skutečná appearance, při zachování původních podepsaných bajtů

Vyžadované kontroly důvěry, timestampů i podepsaných revokací lze nakonfigurovat přes SetSignaturePolicyOptions; běžná kontrola integrity nezakládá důvěru k nespecifikovanému podnikovému rootu

ImportData připraví jednoho kandidátního PDF a jeden samostatně načtený THotPDF; vypůjčený dokument nemutuje; sémanticky nezměněný import si pořád autentizuje podepsanou politiku, dřív než zkopíruje přesnou aktuální revizi

WritePreparedPDF zkopíruje ohraničené kandidátní bajty do dodaného streamu; publikujte úspěšně každý povinný callback PDF i výsledku, dřív než TakeCandidate; selhání či zrušení znamená transakci zahodit

TakeCandidate přenese vlastnictví jak THotPDF, tak jeho THPDFWindowsFormDataSource; dokument zničte, dřív než jeho zdroj; kandidát si nedrží cancellation token transakce

THPDFWindowsFormDataSource vlastní výhradně vytvořený dočasný soubor; Seal ho flushne a znovu otevře pro read-only přístup; zničení soubor zavře a odstraní; zdrojové callbacky nežijí déle než vlastnící zdroj

ExportAnnotations a ImportAnnotations implementují mapovanou anotační XFDF výměnu; ChangedAnnotations reportuje počet připojení, se stejným počítadlem připravených změn jako ChangedFields

Limity

FillTypedData připraví smíšená skalární pole i původní typované rich runy ve stejném kandidátovi, bez round tripu dekódování RV; accessory připravených polí čtou skutečného výsledného kandidáta

ImportDataWithFamilies vybere jednu až šestnáct pojmenovaných rodin se skutečnými style programy a stejným autentizovaným kandidátním životním cyklem; původní metoda ImportData si uchovává chování jedné rodiny

THPDFWindowsFormDataLimits.Default nastaví MaxWorkingBytes na 256 MiB, MaxOutputBytes na 128 MiB, MaxObjects na 100000 a MaxPages na 10000; pracovní kapacita musí být alespoň 1 MiB a všechny ostatní kapacity kladné

CancellationToken je vypůjčený a platný jen do zničení transakce; dotazuje token operací původního dokumentu i Checkpoint během nativního parsování, dekódování rich XML, validace politiky i kopírování

Ta Windows třída je dostupná modernímu Delphi, C++Builder i Windows FPC; nativní Linux používá THPDFHeadlessDocument přímo

Související témata

Windows FDF/XFDF exchange, Příprava aktuálního grafu, Nativní form data

Grafy FDF anotací

ExportAnnotationsFDF vrátí počet anotací a zapíše ohraničené binární FDF do Bytes; ImportAnnotationsFDF připraví kandidáta pomocí THPDFFDFOptions

FDF profil zachovává dodané appearance resource a sdílené nepřímé objekty; shodné NM hodnoty na stejné stránce vybírají existující anotace k nahrazení

FDF metody používají tentýž ownership vypůjčeného dokumentu, authenticated politiku a lifecycle připraveného kandidáta; ChangedAnnotations počítá skutečné náhrady i připojení a ekvivalentní import zachovává přesně aktuální revizi

Odstranění anotací

RemoveAnnotations připraví přesná odebrání podle stránky a NM, včetně závislých popup a reply, přes tentýž lifecycle kandidáta; ChangedAnnotations hlásí všechna odebrání jednou

Publikujte PDF a data výsledku před TakeCandidate; selhání ponechá vypůjčený dokument i zdroj beze změny