THPDFHeadlessDocument.SignToFile

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

Assina um campo existente não assinado de assinaturas AcroForm e publica atomicamente uma saída independente em Linux ou Windows nativos

FieldIndex é o índice de campos de formulários com base zero devolvido por FindFormField ou GetFormField, que pode diferir de um índice de assinaturas assinadas aceite por VerifySignature

O certificado e a chave privada correspondente têm de ser bytes PEM; chaves privadas encriptadas são rejeitadas sem pedir palavra-passe, e o OpenSSL 3 é carregado através do mesmo fornecedor usado por HPDFSignHeadlessCMS

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

O perfil por defeito é adbe.pkcs7.detached; RequireCAdES=true escreve ETSI.CAdES.detached e inclui um atributo signing-certificate, e a verificação de documentos autentica automaticamente o binding ESS dele, com confiança explícita em CAs avaliada separadamente

O escritor copia os bytes da fonte, acrescenta valores de substituição de campos e um objeto novo de assinaturas através do escritor partilhado de xrefs, aplica patches aos slots numéricos de largura fixa de ByteRange, assina os intervalos reais do ficheiro de staging e verifica o CMS resultante antes do flush e da publicação atómica

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

A fonte é aberta só de leitura, o grafo carregado de campos não é alterado pela assinatura, e aliases de caminhos de fontes ou aliases físicos de ficheiros são rejeitados

Falhas preservam um destino existente e apagam o ficheiro de staging não publicado, incluindo cancelamento, reservas insuficientes, falhas de certificados/chaves, erros criptográficos e esgotamento de orçamentos de objetos ou de ficheiros

Campos só de leitura, valores assinados de campos, políticas proibidas de documentos certificados e permissões negadas AES de preenchimento de formulários são rejeitados; a autenticação de proprietários pode autorizar fontes restritas, enquanto a saída mantém a palavra-passe de utilizadores e a política de segurança originais

CertificationPermission de 1 a 3 cria uma primeira assinatura de certificação com catalog Perms.DocMDP 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 de CMS têm de usar o mesmo token de cancelamento se ambas especificarem um; caso contrário o fornecedor CMS herda o token do documento

O THPDFHeadlessCMSResult devolvido separa integridade de confiança explicitamente avaliada em CAs; nenhuma conclusão de timestamps, revogação ou validação de longo prazo é implícita

Use AddSignatureField e SetSignatureFieldAppearance para preparar um widget novo visível de assinaturas, ou SignPFXToFile para carregar uma identidade PKCS12 através de OpenSSL 3

Use TimestampToFile para acrescentar um timestamp de documentos RFC3161 autónomo sem uma identidade de assinatura de aplicações