THPDFWindowsFormDataTransaction

HPDFWindowsFormData предоставляет мост Windows от текущего графа THotPDF к нативному аутентифицированному движку FDF/XFDF

Объявления

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;

Владение и политика

Document, OriginalSource и Checkpoint заимствуются до уничтожения; OriginalSource должен точно соответствовать загруженной исходной ревизии документа; конструктор копирует и запечатывает приватный исходный источник, аутентифицирует его учётные данные AES и подготавливает фактический ожидающий граф в другом приватном источнике

Нативный движок проверяет целостность существующих подписей и привязку сертификата ESS, права DocMDP, блокировки FieldMDP и флаги read-only полей; разрешённые обновления P2/P3 заново генерируют подлинные appearance, сохраняя исходные подписанные байты

Обязательные проверки доверия, метки времени и подписанного отзыва можно настроить через SetSignaturePolicyOptions; обычная проверка целостности не означает доверия к неуказанному бизнес-корню

ImportData подготавливает один PDF-кандидат и один отдельно загруженный THotPDF; заимствованный документ он не изменяет; семантически неизменённый импорт всё равно аутентифицирует подписанную политику перед копированием точной текущей ревизии

WritePreparedPDF копирует ограниченные байты кандидата в переданный поток; успешно опубликуйте все обязательные PDF- и result-колбэки до TakeCandidate; сбой или отмена означают отказ от транзакции

TakeCandidate передаёт владение и THotPDF, и его THPDFWindowsFormDataSource; уничтожайте документ до уничтожения его источника; кандидат не удерживает токен отмены транзакции

THPDFWindowsFormDataSource владеет исключительно созданным временным файлом; Seal сбрасывает его и переоткрывает только для чтения; уничтожение закрывает и удаляет файл; колбэки источника не переживают владеющий источник

ExportAnnotations и ImportAnnotations реализуют отображаемый обмен аннотациями XFDF; ChangedAnnotations сообщает число добавлений, используя тот же счётчик подготовленных изменений, что и ChangedFields

Лимиты

FillTypedData подготавливает смешанные скалярные поля и исходные типизированные rich-run в одном кандидате без round-trip декодирования RV; accessor'ы подготовленных полей читают фактический результирующий кандидат

ImportDataWithFamilies выбирает от одного до шестнадцати именованных семейств с фактическими программами стилей и тем же аутентифицированным жизненным циклом кандидата; исходный метод ImportData сохраняет поведение с одним семейством

THPDFWindowsFormDataLimits.Default задаёт MaxWorkingBytes в 256 МиБ, MaxOutputBytes в 128 МиБ, MaxObjects в 100000 и MaxPages в 10000; рабочая ёмкость должна быть не менее 1 МиБ, а все прочие ёмкости — положительными

CancellationToken заимствуется и действителен только до уничтожения транзакции; он опрашивает токен операции исходного документа и Checkpoint во время нативного разбора, декодирования rich XML, валидации политики и копирования

Этот Windows-класс доступен современным Delphi, C++Builder и Windows FPC; нативный Linux использует THPDFHeadlessDocument напрямую

Связанные темы

Обмен FDF/XFDF в Windows, Подготовка текущего графа, Нативные данные форм

Графы аннотаций FDF

ExportAnnotationsFDF возвращает число аннотаций и записывает ограниченный бинарный FDF в Bytes; ImportAnnotationsFDF готовит кандидата с использованием THPDFFDFOptions

Профиль FDF сохраняет предоставленные ресурсы внешних видов и общие косвенные объекты; совпадающие значения NM на той же странице выбирают существующие аннотации для замещения

Методы FDF используют то же владение заимствованным документом, аутентифицированную политику и жизненный цикл подготовленного кандидата; ChangedAnnotations считает фактические замены и добавления, а эквивалентный импорт сохраняет точную текущую ревизию

Удаление аннотаций

RemoveAnnotations готовит точные удаления страница-и-NM, включая зависимые popup и ответы, через тот же жизненный цикл кандидата; ChangedAnnotations сообщает все удаления по одному разу

Публикуйте данные PDF и результата до TakeCandidate; сбой оставляет заимствованные документ и источник неизменными