THPDFHeadlessDocument.SignToFile

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

Assina um campo de assinatura AcroForm existente não assinado e publica atomicamente uma saída independente no Linux nativo ou no Windows

FieldIndex é o índice de campo de formulário com base zero retornado por FindFormField ou GetFormField, que pode diferir de um índice de assinatura assinada aceito por VerifySignature

O certificado e a chave privada correspondente precisam ser bytes PEM; chaves privadas criptografadas são rejeitadas sem prompt, e o OpenSSL 3 é carregado pelo mesmo provider usado por HPDFSignHeadlessCMS

ReservedCMSBytes reserva um gap hexadecimal fixo de Contents antes do hashing; precisa ser positivo, caber no orçamento de objetos do documento e acomodar o DER CMS gerado completo

O perfil default é adbe.pkcs7.detached; RequireCAdES=true grava ETSI.CAdES.detached e inclui um atributo signing-certificate, e a verificação de documentos autentica automaticamente seu binding ESS, com a confiança explícita de CA avaliada separadamente

O writer copia os bytes da origem, anexa valores de campos de substituição e um novo objeto de assinatura pelo writer compartilhado de xref, aplica patches nos slots fixos de ByteRange, assina as faixas reais do arquivo de staging e verifica o CMS resultante antes do flush e da publicação atômica

Cada assinatura de aprovação anterior retém seus bytes originais exatos; o resultado da verificação dela reporta uma revisão anterior válida e o número de bytes posteriores não assinados

A origem é aberta somente leitura, o grafo de campos carregado não é alterado pela assinatura, e aliases de caminho ou de arquivo físico da origem são rejeitados

Falhas preservam um destino existente e apagam o arquivo de staging não publicado, incluindo cancelamento, reservas insuficientes, falhas de certificado/chave, erros criptográficos e esgotamento dos orçamentos de objetos ou arquivos

Campos read-only, valores de campos assinados, políticas proibidas de documentos certificados e permissões AES de form-fill negadas são rejeitados; a autenticação de owner pode autorizar origens restritas, enquanto a saída retém a senha de usuário original e a política de segurança

CertificationPermission de 1 a 3 cria uma primeira assinatura de certificação com Perms.DocMDP no catalog e um transform SigRef; zero cria uma assinatura de aprovação, incluindo uma assinatura subsequente permitida num campo existente sob DocMDP P2 ou P3

As opções do documento e do CMS precisam usar o mesmo token de cancelamento se ambas especificarem um; caso contrário, o provider de CMS herda o token do documento

O THPDFHeadlessCMSResult retornado separa a integridade da confiança de CA explicitamente avaliada; nenhuma conclusão de timestamp, revogação ou validação de longo prazo é implícita

Use AddSignatureField e SetSignatureFieldAppearance para preparar um novo widget de assinatura visível, ou SignPFXToFile para carregar uma identidade PKCS12 pelo OpenSSL 3

Use TimestampToFile para anexar um document timestamp RFC3161 independente sem identidade de assinatura da aplicação