THPDFHeadlessDocument.SignToFile
function SignToFile(FieldIndex: Integer; const FileName: string;
const CertificatePEM, PrivateKeyPEM: SysUtils.TBytes;
const Options: THPDFHeadlessCMSOptions;
ReservedCMSBytes: Integer = 16384): THPDFHeadlessCMSResult;
Podepíše existující nepodepsané pole podpisu AcroForm a atomicky publikuje nezávislý výstup na nativním Linuxu či Windows
FieldIndex je zero-based index formulářového pole vrácený FindFormField či GetFormField, který se může lišit od indexu podepsaného podpisu přijímaného VerifySignature
Certifikát i odpovídající privátní klíč musí být PEM bajty; šifrované privátní klíče se odmítnou bez dotazování a OpenSSL 3 se načte přes téhož providera, jaký používá HPDFSignHeadlessCMS
ReservedCMSBytes rezervuje pevnou hexadecimální mezeru Contents před hashováním; musí být kladné, vejít se do rozpočtu dokumentových objektů a pojmout kompletní generovaný CMS DER
Výchozí profil je adbe.pkcs7.detached; RequireCAdES=true zapisuje ETSI.CAdES.detached a zahrne atribut signing-certificate, přičemž dokumentová verifikace automaticky autentizuje jeho vazbu ESS, s explicitní CA důvěrou vyhodnocovanou odděleně
Writer zkopíruje zdrojové bajty, připojí náhradní hodnoty polí i nový objekt podpisu přes sdílený xref writer, záplatuje číselné sloty ByteRange pevné šířky, podepíše skutečné rozsahy staging souboru a verifikuje výsledné CMS, dřív než flushne a atomicky publikuje
Každý starší schvalovací podpis si ponechá své přesné původní bajty; jeho verifikační výsledek reportuje platnou dřívější revizi i počet pozdějších nepodepsaných bajtů
Zdroj se otevírá read-only, načtený grafový stav polí podepsáním se nemění a aliasy zdrojové cesty či fyzické aliasy souboru se odmítají
Selhání zachovají existující cíl a smažou nepublikovaný staging soubor, tedy i zrušení, nedostatečné rezervace, selhání certifikátu/klíče, kryptografické chyby i vyčerpání rozpočtů objektů či souborů
Pole read-only, hodnoty podepsaných polí, zakázané politiky certifikovaných dokumentů i odmítnutá AES oprávnění pro vyplňování formulářů se odmítají; autentizace vlastníkem může autorizovat restriktivní zdroje, zatímco výstup si ponechá původní user password i bezpečnostní politiku
CertificationPermission od 1 do 3 vytvoří první certifikační podpis s katalogovými Perms.DocMDP a transformací SigRef; nula vytvoří schvalovací podpis, tedy i povolený následný podpis v existujícím poli pod DocMDP P2 či P3
Dokumentové i CMS volby musí při specifikaci tokenů použít tentýž cancellation token; jinak CMS provider zdědí token dokumentu
Vrácený THPDFHeadlessCMSResult odděluje integritu od explicitně vyhodnocené CA důvěry; nezakládá žádný závěr o timestampu, revokacích ani dlouhodobé validaci
K přípravě nového viditelného widgetu podpisu použijte AddSignatureField a SetSignatureFieldAppearance, k načtení identity PKCS12 přes OpenSSL 3 zase SignPFXToFile
TimestampToFile připojí samostatný RFC3161 document timestamp bez podepisující identity aplikace