Запись THPDFCABIOperationV1

Версионированный дескриптор C ABI для одной JSON-операции над документом с IO на колбэках

THPDFCABIOperationV1 = record
  StructSize: UInt32;
  ABIVersion: UInt32;
  Flags: UInt64;
  JSON: PAnsiChar;
  JSONLength: NativeUInt;
  InputIO: PHPDFCABIIOV1;
  OutputIO: PHPDFCABIIOV1;
  ResultIO: PHPDFCABIIOV1;
end;

Модуль — HPDFCAPI; StructSize и ABIVersion должны совпадать с размерами и версиями, которые сообщают hpdf_abi_operation_v1_size и hpdf_abi_version, иначе вызов отвергается

JSON с JSONLength несёт UTF-8 объект операции, принимаемый тем же движком, что и THPDFJobProcessor.ExecuteLoadedOperation

Три IO-записи — заимствованные наборы колбэков: InputIO передаёт байты источника, OutputIO принимает бинарные результаты, а ResultIO — JSON-документ результата

Для JSON-выполнения и сравнения двух handle неудавшийся write-колбэк повторно не вызывается для публикации результата об ошибке через ту же пару writer и user-data, даже если OutputIO и ResultIO делят эту пару; частичные байты кандидата, уже принятые вызывающим, остаются его заботой

Значения статуса записи вне определённого ненулевого диапазона, а также нулевые или чрезмерные счётчики успешных байтов превращаются в HPDF_STATUS_IO_ERROR; раскладка записи V1 и поведение успешной частичной записи не меняются

Структура передаётся указателем в hpdf_document_execute_json_v1 и hpdf_document_compare_json_v1 и расширяется только добавлением полей за новой версией ABI

Документные операции через JSON и C ABI