THPDFHeadlessDocument.SignToFile
function SignToFile(FieldIndex: Integer; const FileName: string;
const CertificatePEM, PrivateKeyPEM: SysUtils.TBytes;
const Options: THPDFHeadlessCMSOptions;
ReservedCMSBytes: Integer = 16384): THPDFHeadlessCMSResult;
Firma un campo firma AcroForm esistente non firmato e pubblica atomicamente un output indipendente su Linux nativo o Windows
FieldIndex è l'indice del campo modulo a base zero restituito da FindFormField o GetFormField, che può differire dall'indice di firma firmata accettato da VerifySignature
Il certificato e la chiave privata corrispondente devono essere byte PEM; le chiavi private cifrate vengono rifiutate senza prompt, e OpenSSL 3 è caricato tramite lo stesso provider usato da HPDFSignHeadlessCMS
ReservedCMSBytes riserva un gap esadecimale fisso di Contents prima dell'hashing; deve essere positivo, stare nel budget oggetti del documento e contenere il CMS DER completo generato
Il profilo predefinito è adbe.pkcs7.detached; RequireCAdES=true scrive ETSI.CAdES.detached e include un attributo signing-certificate, la verifica del documento autentica automaticamente il suo binding ESS, con trust CA esplicito valutato separatamente
Il writer copia i byte sorgente, accoda valori di campo sostitutivi e un nuovo oggetto firma tramite il writer xref condiviso, corregge gli slot ByteRange a larghezza fissa, firma i veri range del file di staging e verifica il CMS risultante prima di flush e pubblicazione atomica
Ogni firma di approvazione precedente conserva i suoi esatti byte originali; il risultato di verifica riporta una revisione precedente valida e il numero di byte successivi non firmati
La sorgente è aperta in sola lettura, il grafo dei campi caricato non cambia con la firma, e alias di percorso sorgente o alias fisici di file vengono rifiutati
I fallimenti conservano una destinazione esistente e cancellano il file di staging non pubblicato, inclusi cancellazione, riserve insufficienti, fallimenti certificato/chiave, errori crittografici ed esaurimento del budget oggetti o file
Campi read-only, valori di campi firmati, policy certified-document non consentite e permessi form-fill AES negati vengono rifiutati; l'autenticazione owner può autorizzare sorgenti ristrette, mentre l'output conserva la password utente originale e la policy di sicurezza
CertificationPermission da 1 a 3 crea una prima firma di certificazione con Perms.DocMDP del catalogo e una trasformazione SigRef; zero crea una firma di approvazione, inclusa una firma successiva consentita in un campo esistente sotto DocMDP P2 o P3
Le opzioni documento e CMS devono usare lo stesso cancellation token se entrambe lo specificano; altrimenti il provider CMS eredita il token del documento
Il THPDFHeadlessCMSResult restituito separa l'integrità dal trust CA valutato esplicitamente; nessuna conclusione su timestamp, revoca o validazione a lungo termine è implicita
Usa AddSignatureField e SetSignatureFieldAppearance per preparare un nuovo widget firma visibile, oppure SignPFXToFile per caricare un'identità PKCS12 tramite OpenSSL 3
Usa TimestampToFile per aggiungere un timestamp documento RFC3161 autonomo senza un'identità di firma applicativa