THPDFHeadlessDocument.SignToFile

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

Firma un campo de firma AcroForm existente sin firmar y publica atómicamente una salida independiente en Linux o Windows nativos

FieldIndex es el índice de campo de formulario base cero devuelto por FindFormField o GetFormField, que puede diferir del índice de firma firmada que acepta VerifySignature

El certificado y la llave privada correspondiente deben ser bytes PEM; las llaves privadas cifradas se rechazan sin preguntar, y OpenSSL 3 se carga a través del mismo provider que usa HPDFSignHeadlessCMS

ReservedCMSBytes reserva un hueco fijo hexadecimal de Contents antes del hashing; debe ser positivo, caber en el presupuesto de objetos del documento y alojar el CMS DER completo generado

El perfil por defecto es adbe.pkcs7.detached; RequireCAdES=true escribe ETSI.CAdES.detached e incluye un atributo signing-certificate; la verificación del documento autentica automáticamente su binding ESS, con el trust de CA explícito evaluado por separado

El writer copia los bytes de origen, agrega los valores de campo de reemplazo y un nuevo objeto de firma a través del writer xref compartido, parchea los slots ByteRange de ancho fijo, firma los rangos reales del archivo de staging y verifica el CMS resultante antes del flush y la publicación atómica

Cada firma de aprobación anterior conserva sus bytes originales exactos; su resultado de verificación reporta una revisión anterior válida y la cantidad de bytes sin firmar posteriores

El origen se abre en modo read-only, el grafo de campos cargado no cambia al firmar, y los alias de ruta de origen o alias de archivo físico se rechazan

Los fallos conservan un destino existente y eliminan el archivo de staging no publicado, incluidos la cancelación, las reservas insuficientes, los fallos de certificado/llave, los errores criptográficos y el agotamiento del presupuesto de objetos o de archivo

Los campos read-only, los valores de campos firmados, las políticas de documento certificado no permitidas y los permisos AES de llenado denegados se rechazan; la autenticación de owner puede autorizar orígenes restringidos, mientras que la salida conserva la contraseña de usuario original y la política de seguridad

Un CertificationPermission de 1 a 3 crea una primera firma de certificación con Perms.DocMDP de catálogo y un transform SigRef; cero crea una firma de aprobación, incluida una firma posterior permitida en un campo existente bajo DocMDP P2 o P3

Las opciones del documento y del CMS deben usar el mismo cancellation token si ambas especifican uno; de lo contrario, el provider CMS hereda el token del documento

El THPDFHeadlessCMSResult devuelto separa la integridad del trust de CA evaluado explícitamente; no se implica ninguna conclusión de timestamp, revocación ni validación de largo plazo

Usa AddSignatureField y SetSignatureFieldAppearance para preparar un nuevo widget de firma visible, o SignPFXToFile para cargar una identidad PKCS12 a través de OpenSSL 3

Usa TimestampToFile para agregar un timestamp de documento RFC3161 independiente sin una identidad de firma de la aplicación