THPDFHeadlessDocument.SignToFile

function SignToFile(FieldIndex: Integer; const FileName: string;
  const CertificatePEM, PrivateKeyPEM: SysUtils.TBytes;
  const Options: THPDFHeadlessCMSOptions;
  ReservedCMSBytes: Integer = 16384): THPDFHeadlessCMSResult;

Подписывает существующее неподписанное поле подписи AcroForm и атомарно публикует независимый вывод на нативных Linux и Windows

FieldIndex — это индекс поля формы с нуля, возвращаемый FindFormField или GetFormField; он может отличаться от индекса подписи, который принимает VerifySignature

Сертификат и соответствующий закрытый ключ должны быть байтами PEM; зашифрованные закрытые ключи отклоняются без запросов, а OpenSSL 3 загружается через того же провайдера, что и в HPDFSignHeadlessCMS

ReservedCMSBytes резервирует фиксированный шестнадцатеричный зазор Contents до хеширования; он должен быть положительным, укладываться в бюджет объектов документа и вмещать полный сгенерированный CMS DER

Профиль по умолчанию — adbe.pkcs7.detached; RequireCAdES=true пишет ETSI.CAdES.detached и включает атрибут сертификата подписанта; верификация документа автоматически аутентифицирует его привязку ESS, а явное доверие CA оценивается отдельно

Писатель копирует байты источника, добавляет замещающие значения полей и новый объект подписи через общий xref-писатель, исправляет слоты ByteRange фиксированной ширины, подписывает реальные диапазоны staging-файла и проверяет итоговый CMS до сброса и атомарной публикации

Каждая старая approve-подпись сохраняет свои точные исходные байты; результат её проверки сообщает о корректной более ранней ревизии и числе последующих неподписанных байтов

Источник открывается только для чтения, подписывание не меняет загруженный граф полей, а алиасы пути источника и физические алиасы файла отклоняются

Сбои сохраняют существующий целевой файл и удаляют неопубликованный staging-файл — включая отмену, недостаточные резервирования, сбои сертификата и ключа, криптографические ошибки и исчерпание бюджета объектов или файла

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

CertificationPermission от 1 до 3 создаёт первую сертификационную подпись с catalog Perms.DocMDP и трансформацией SigRef; ноль создаёт approve-подпись, включая разрешённую последующую подпись в существующем поле при DocMDP P2 или P3

Опции документа и CMS должны использовать один и тот же токен отмены, если заданы оба; иначе провайдер CMS наследует токен документа

Возвращаемый THPDFHeadlessCMSResult отделяет целостность от явно оценённого доверия CA; никакие выводы о метке времени, отзыве или долгосрочной валидации не подразумеваются

Используйте AddSignatureField и SetSignatureFieldAppearance для подготовки нового видимого виджета подписи, а SignPFXToFile — для загрузки идентичности PKCS12 через OpenSSL 3

Используйте TimestampToFile, чтобы добавить отдельную метку времени документа RFC3161 без подписной идентичности приложения