인증 서명과 필드 잠금
HotPDF는 인증 서명과 서명된 필드 잠금에 첨부된 PDF 권한 구조를 작성한 다음 로드된 문서에서 동일한 구조를 검사할 수 있습니다
생산자 API
procedure AddCertificationSignatureField(
const FieldName: AnsiString;
Rectangle: TRect;
Permission: THPDFDocMDPPermission;
ContentsBytes: Integer = 8192;
const SubFilter: AnsiString = 'adbe.pkcs7.detached';
const Reason: AnsiString = '';
const Location: AnsiString = '';
const ContactName: AnsiString = '';
Flags: THPDFFormFieldFlags = []);
procedure ConfigureCertificationSignature(
const FieldName: AnsiString;
Permission: THPDFDocMDPPermission);
procedure AttachSignatureFieldLock(
const FieldName: AnsiString;
Action: THPDFFieldLockAction;
const Fields: array of AnsiString);
AddCertificationSignatureField는 서명된 자리 표시자 생성과 인증 구성을 결합합니다
ConfigureCertificationSignature는 기존에 작성된 서명 자리 표시자용이며 해당 필드가 서명 사전을 가진 첫 번째 필드여야 합니다
문서에는 하나의 인증 서명만 포함될 수 있으므로 두 번째 구성 요청은 객체 그래프가 변경되기 전에 거부됩니다
이 API는 PDF 1.5 출력을 자동으로 협상합니다
DocMDP 권한 수준
| 값 | 인증 권한 |
|---|---|
dmpNoChanges | 인증 후 변경이 허용되지 않습니다 |
dmpFormFillAndSign | 양식 작성, 템플릿 인스턴스화 및 서명이 허용됩니다 |
dmpFormFillSignAndAnnotate | 앞의 변경 사항에 주석 생성, 삭제 및 수정이 허용됩니다 |
dmpNone은 DocMDP 변환이 없는 검사 결과용으로 예약되며 생산자 메서드에 의해 거부됩니다
필드 잠금 범위
| 값 | Fields 인수 | 서명 후 효과 |
|---|---|---|
flaAll | 비어 있어야 합니다 | 모든 양식 필드를 잠급니다 |
flaInclude | 하나 이상의 고유 필드 이름 | 나열된 필드만 잠급니다 |
flaExclude | 하나 이상의 고유 필드 이름 | 나열된 필드를 제외한 모든 필드를 잠급니다 |
AttachSignatureFieldLock은 빈 이름, 중복 이름, 잘못된 액션 값, 호환되지 않는 Fields 모양, 서명되지 않은 대상 필드 또는 이미 잠금이나 FieldMDP 정책을 가진 필드를 거부합니다
내보낸 구조
- 인증 서명은 직접 DocMDP 서명 참조 사전과 직접 변환 매개변수를 포함하는 직접
/Reference배열을 가집니다 - Catalog
/Perms /DocMDP항목은 동일한 간접 서명 사전을 가리킵니다 - 필드
/Lock항목은 간접/Type /SigFieldLock사전을 가리킵니다 - 잠금 범위는 직접 FieldMDP 서명 참조로 복사되며 그
/Data항목은 간접 Catalog 루트를 가리킵니다 - 서명 사전은
/V 1을 통해 변환 참조를 중요으로 표시합니다
Delphi 예제
var
LockedFields: THPDFAnsiStringArray;
begin
HotPDF.CurrentPage.AddTextField(
'InternalCode', '', Rect(40, 80, 220, 108));
HotPDF.CurrentPage.AddCertificationSignatureField(
'CertSig', Rect(40, 140, 260, 190),
dmpFormFillAndSign, 8192,
'adbe.pkcs7.detached', 'Document approval');
SetLength(LockedFields, 1);
LockedFields[0] := 'InternalCode';
HotPDF.CurrentPage.AttachSignatureFieldLock(
'CertSig', flaInclude, LockedFields);
end;
로드된 검사
function GetLoadedSignaturePermissions(
SigIndex: Integer;
out Info: THPDFSignaturePermissionInfo): Boolean;
판독기는 DocMDP 권한, Catalog 연결, SigFieldLock 범위, FieldMDP 범위, 필드 이름, 구조적 유효성 및 진단 문제 문자열을 보고합니다
필수 직접 및 간접 객체 모양을 검증하고 Catalog /Perms /DocMDP가 동일한 서명 사전을 대상으로 하는지 확인합니다
SigFieldLock과 FieldMDP가 모두 존재하면 해당 액션과 필드 목록이 일치해야 합니다
판독기는 제한된 사전 및 배열 검사를 수행하며 JavaScript, 액션 또는 서명 내용을 실행하지 않습니다
검증 경계
GetLoadedSignaturePermissions는 정책 구조만 보고합니다
VerifyLoadedSignature는 계속해서 암호화 무결성을 별도로 보고합니다
어느 메서드도 보고된 DocMDP 또는 FieldMDP 권한을 모든 후속 증분 개정이 준수한다고 주장하지 않습니다, 왜냐하면 그것은 개정별 의미 변경 분석을 필요로 하기 때문입니다
성능
생산자 검증은 작성된 AcroForm 필드와 작은 서명 참조 배열만 스캔하며, 로드된 검사는 선택된 서명, 그 잠금, 그 참조 및 Catalog 권한 항목만 읽습니다
페이지 내용, 이미지 스트림, 글꼴 프로그램 또는 관련 없는 간접 객체는 디코딩되지 않습니다