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