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 nativo o Windows

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 su clave privada correspondiente deben ser bytes PEM; las claves privadas cifradas se rechazan sin preguntar, y OpenSSL 3 se carga a través del mismo provider usado por HPDFSignHeadlessCMS

ReservedCMSBytes reserva un hueco hexadecimal fijo de Contents antes de calcular el hash; debe ser positivo, caber en el presupuesto de objetos del documento y acomodar 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, añade los valores de campo de reemplazo y un objeto de firma nuevo a través del writer xref compartido, parchea los slots ByteRange de anchura fija, 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 informa de una revisión anterior válida y del número de bytes sin firmar posteriores

El origen se abre en solo lectura, 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 preservan un destino existente y borran el archivo de staging no publicado, incluidos la cancelación, las reservas insuficientes, los fallos de certificado/clave, los errores criptográficos y el agotamiento del presupuesto de objetos o de archivo

Los campos de solo lectura, los valores de campos firmados, las políticas de documento certificado no permitidas y los permisos de relleno AES denegados se rechazan; la autenticación de propietario puede autorizar orígenes restringidos, mientras que la salida conserva la contraseña de usuario y la política de seguridad originales

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; en caso contrario, el provider del 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 a largo plazo

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

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