THPDFHeadlessDocument.SignToFile

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

Signiert ein bestehendes unsigniertes AcroForm-Signaturfeld und veröffentlicht eine unabhängige Ausgabe atomar auf nativem Linux oder Windows

FieldIndex ist der nullbasierte Formularfeldindex, den FindFormField oder GetFormField zurückgeben, und kann sich von einem Signed-Signature-Index unterscheiden, den VerifySignature akzeptiert

Zertifikat und passender privater Schlüssel müssen PEM-Bytes sein; verschlüsselte private Schlüssel werden ohne Nachfrage abgelehnt, und OpenSSL 3 wird über denselben Provider geladen wie HPDFSignHeadlessCMS

ReservedCMSBytes reserviert vor dem Hashen eine feste hexadezimale Contents-Lücke; der Wert muss positiv sein, ins Dokumentobjektbudget passen und das vollständige generierte CMS-DER aufnehmen können

Das Standardprofil ist adbe.pkcs7.detached; RequireCAdES=true schreibt ETSI.CAdES.detached und enthält ein Signing-Certificate-Attribut, die Dokumentverifizierung authentifiziert dessen ESS-Bindung automatisch, während explizite CA-Trust separat bewertet wird

Der Writer kopiert die Quellbytes, hängt Ersatzfeldwerte und ein neues Signaturobjekt über den gemeinsamen xref-Writer an, patcht die festen ByteRange-Slots, signiert die echten Staging-Datei-Bereiche und verifiziert das resultierende CMS, bevor geflusht und atomar veröffentlicht wird

Jede ältere Approval-Signatur behält ihre exakten Originalbytes; ihr Verifikationsergebnis meldet eine gültige frühere Revision und die Anzahl späterer unsignierter Bytes

Die Quelle wird schreibgeschützt geöffnet, der geladene Feldgraph bleibt vom Signieren unberührt, und Quellpfad-Aliase oder physische Dateialiase werden zurückgewiesen

Fehlschläge bewahren ein bestehendes Ziel und löschen die unveröffentlichte Staging-Datei, einschließlich Abbruch, unzureichender Reservierungen, Zertifikats-/Schlüssel-Fehlern, kryptografischer Fehler und erschöpfter Objekt- oder Dateibudgets

Schreibgeschützte Felder, signierte Feldwerte, unzulässige Certified-Document-Policys und verweigerte AES-Formularfüllberechtigungen werden abgelehnt; Owner-Authentifizierung kann eingeschränkte Quellen autorisieren, während die Ausgabe das ursprüngliche User-Passwort und die Security-Policy behält

CertificationPermission von 1 bis 3 erzeugt eine erste Certification-Signatur mit Catalog Perms.DocMDP und einer SigRef-Transform; null erzeugt eine Approval-Signatur, einschließlich einer zulässigen Folgesignatur in einem bestehenden Feld unter DocMDP P2 oder P3

Dokument- und CMS-Optionen müssen dasselbe Abbruch-Token verwenden, wenn beide eines angeben; andernfalls erbt der CMS-Provider das Dokument-Token

Das zurückgegebene THPDFHeadlessCMSResult trennt Integrität von explizit bewertetem CA-Trust; es wird keine Aussage über Timestamp, Revocation oder Langzeitvalidierung impliziert

Nutzen Sie AddSignatureField und SetSignatureFieldAppearance, um ein neues sichtbares Signatur-Widget vorzubereiten, oder SignPFXToFile, um eine PKCS12-Identität über OpenSSL 3 zu laden

Nutzen Sie TimestampToFile, um einen eigenständigen RFC3161-Dokument-Timestamp ohne Application-Signaturidentität anzuhängen