THPDFHeadlessDocument.SignToFile

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

Signe un champ de signature AcroForm non signé existant et publie atomiquement une sortie indépendante sur Linux natif ou Windows

FieldIndex est l'index de champ de formulaire base zéro retourné par FindFormField ou GetFormField, qui peut différer d'un index de signature signée accepté par VerifySignature

Le certificat et la clé privée correspondante doivent être des octets PEM ; les clés privées chiffrées sont rejetées sans invite, et OpenSSL 3 est chargé via le même provider utilisé par HPDFSignHeadlessCMS

ReservedCMSBytes réserve un espace Contents hexadécimal fixe avant le hachage ; il doit être positif, tenir dans le budget d'objets du document, et accommoder le CMS DER généré complet

Le profil par défaut est adbe.pkcs7.detached ; RequireCAdES=true écrit ETSI.CAdES.detached et inclut un attribut signing-certificate, la vérification de document authentifie automatiquement son binding ESS, avec un trust CA explicite évalué séparément

Le writer copie les octets sources, ajoute les valeurs de champs de remplacement et un nouvel objet de signature via le writer xref partagé, patche les slots ByteRange à largeur fixe, signe les plages réelles du fichier de staging, et vérifie le CMS résultant avant flush et publication atomique

Chaque signature d'approbation plus ancienne conserve ses octets d'origine exacts ; son résultat de vérification rapporte une révision antérieure valide et le nombre d'octets non signés ultérieurs

La source est ouverte en lecture seule, le graphe de champs chargé n'est pas changé par la signature, et les alias de chemin source ou alias de fichier physique sont rejetés

Les échecs préservent une destination existante et suppriment le fichier de staging non publié, y compris annulation, réservations insuffisantes, échecs de certificat/clé, erreurs cryptographiques et épuisement du budget d'objets ou de fichier

Champs en lecture seule, valeurs de champs signées, politiques de document certifié interdites et permissions de remplissage AES refusées sont rejetées ; l'authentification owner peut autoriser des sources restreintes, tandis que la sortie conserve le mot de passe utilisateur et la politique de sécurité d'origine

CertificationPermission de 1 à 3 crée une première signature de certification avec Perms.DocMDP du catalog et une transform SigRef ; zéro crée une signature d'approbation, y compris une signature ultérieure permise dans un champ existant sous DocMDP P2 ou P3

Les options du document et du CMS doivent utiliser le même cancellation token si les deux en spécifient un ; sinon le provider CMS hérite du token du document

Le THPDFHeadlessCMSResult retourné sépare l'intégrité du trust CA explicitement évalué ; aucune conclusion d'horodatage, de révocation ou de validation à long terme n'est impliquée

Utilisez AddSignatureField et SetSignatureFieldAppearance pour préparer un nouveau widget de signature visible, ou SignPFXToFile pour charger une identité PKCS12 via OpenSSL 3

Utilisez TimestampToFile pour ajouter un horodatage de document RFC3161 autonome sans identité de signature applicative