THPDFHeadlessDocument.SignToFile
function SignToFile(FieldIndex: Integer; const FileName: string;
const CertificatePEM, PrivateKeyPEM: SysUtils.TBytes;
const Options: THPDFHeadlessCMSOptions;
ReservedCMSBytes: Integer = 16384): THPDFHeadlessCMSResult;
기존 서명 없는 AcroForm 서명 필드에 서명하고 네이티브 Linux 또는 Windows에서 독립 출력을 원자적으로 발행합니다
FieldIndex는 FindFormField나 GetFormField가 반환하는 0부터 시작하는 폼 필드 인덱스이며, VerifySignature가 받는 signed-signature 인덱스와는 다를 수 있습니다
인증서와 일치하는 개인 키는 PEM 바이트여야 합니다. 암호화된 개인 키는 묻지 않고 거절되며, OpenSSL 3은 HPDFSignHeadlessCMS가 쓰는 같은 프로바이더로 로드됩니다
ReservedCMSBytes는 해시 전에 고정 폭 16진수 Contents 갭을 예약합니다. 양수여야 하고 문서 객체 예산에 맞아야 하며, 생성된 완전한 CMS DER을 수용해야 합니다
기본 프로필은 adbe.pkcs7.detached입니다. RequireCAdES=true는 ETSI.CAdES.detached를 쓰고 signing-certificate 속성을 포함하며, 문서 검증이 ESS 바인딩을 자동 인증하고 명시적 CA 신뢰는 별도 평가됩니다
라이터는 소스 바이트를 복사하고, 공유 xref 라이터로 교체 필드 값과 새 서명 객체를 덧붙이고, 고정 폭 ByteRange 슬롯을 패치하고, 실제 스테이징 파일 범위에 서명한 뒤, 플러시와 원자적 발행 전에 결과 CMS를 검증합니다
이전 approval 서명 각각은 정확한 원본 바이트를 유지합니다. 검증 결과는 유효한 이전 리비전과 이후 서명되지 않은 바이트 수를 보고합니다
소스는 읽기 전용으로 열리고, 로드된 필드 그래프는 서명으로 바뀌지 않으며, 소스 경로 앨리어스나 물리 파일 앨리어스는 거절됩니다
실패 시 기존 대상은 유지되고 발행되지 않은 스테이징 파일은 삭제됩니다. 취소, 부족한 예약, 인증서·키 실패, 암호 오류, 객체·파일 예산 소진도 포함입니다
읽기 전용 필드, 서명된 필드 값, 허용되지 않는 certified-document 정책, 거절된 AES 폼 채우기 권한은 거절됩니다. 소유자 인증은 제한된 소스를 승인할 수 있고, 출력은 원본 사용자 암호와 보안 정책을 유지합니다
CertificationPermission 1~3은 catalog Perms.DocMDP와 SigRef 변환으로 첫 certification 서명을 만듭니다. 0은 approval 서명을 만들며, DocMDP P2·P3 아래 기존 필드의 허용된 다음 서명도 포함입니다
문서와 CMS 옵션이 둘 다 취소 토큰을 지정하면 같은 토큰이어야 합니다. 아니면 CMS 프로바이더가 문서 토큰을 상속합니다
반환된 THPDFHeadlessCMSResult는 무결성과 명시적으로 평가된 CA 신뢰를 분리합니다. timestamp, 폐기, 장기 검증 결론은 함축되지 않습니다
새 보이는 서명 위젯 준비는 AddSignatureField와 SetSignatureFieldAppearance로, PKCS12 아이덴티티 로딩은 OpenSSL 3을 통한 SignPFXToFile로 하세요
애플리케이션 서명 아이덴티티 없이 독립 RFC3161 문서 timestamp를 덧붙이려면 TimestampToFile을 쓰세요