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; сбой оставляет заимствованные документ и источник неизменными