HPDFWriteHeadlessSignatureReservation
Необязательные значения THPDFHeadlessSignatureMetadata становятся записями Reason, Location, ContactInfo и Name в Unicode; тот же StringEncoder применяется и к именам блокировок полей, и к метаданным до записи любых байтов
function HPDFWriteHeadlessSignatureReservation(Target: TStream;
ObjectNumber, Generation, ReservedCMSBytes, MaxObjectBytes: Integer;
CAdES: Boolean = False; CertificationPermission: Integer = 0;
CatalogObjectNumber: Integer = 0; CatalogGeneration: Integer = 0;
FieldLock: PHPDFHeadlessFieldLock = nil;
StringEncoder: THPDFHeadlessPolicyStringEncoder = nil;
StringEncoderContext: Pointer = nil;
Metadata: PHPDFHeadlessSignatureMetadata = nil;
DocumentTimestamp: Boolean = False): THPDFHeadlessSignatureReservation;
Пишет настоящий косвенный словарь подписи с фиксированными числовыми слотами ByteRange и заполненной нулями шестнадцатеричной резервацией Contents
Выходной поток принадлежит вызывающему, который должен передать положительный номер объекта, поколение от 0 до 65535, положительную DER-резервацию и бюджет байтов объекта
Функция проверяет полный размер словаря до записи или выделения резервации и заполняет её шестнадцатеричную полезную нагрузку ограниченными порциями
Задайте CAdES=true для ETSI.CAdES.detached; по умолчанию пишется adbe.pkcs7.detached
Передайте корректную ссылку Catalog и право сертификации от 1 до 3, чтобы выпустить трансформацию DocMDP; необязательная блокировка поля выпускает свою настоящую трансформацию FieldMDP в том же массиве Reference
Имена блокировок полей валидируются и кодируются как PDF-строки UTF-16BE до записи резервации; шифрующие низкоуровневые вызывающие передают callback StringEncoder, который получает байты открытого текста и возвращает байты зашифрованной строки
Callback выполняется до записи любых байтов резервации, а закодированное расширение учитывается в бюджете объекта; THPDFHeadlessDocument автоматически передаёт аутентифицированный контекст шифрования документа
Зарегистрируйте возвращённое смещение объекта в общем xref-писателе, подключите объект к полю подписи и завершите trailer PDF до вызова HPDFFinalizeHeadlessSignatureReservation
Низкоуровневые вызывающие сами отвечают за staging и публикацию; THPDFHeadlessDocument.SignToFile даёт защиту источника, сохранение шифрования, бюджеты и атомарную публикацию файла
DocumentTimestamp=true пишет DocTimeStamp/ETSI.RFC3161 вместо approve-профиля и запрещает ссылки на трансформации сертификации или блокировки полей; завершайте его через HPDFFinalizeHeadlessDocumentTimestampReservation