THotPDF.ValidatePDFA4 Method
생성했거나 로드한 객체 그래프를 지원되는 PDF/A-4 base, PDF/A-4e engineering, PDF/A-4f associated-file profile과 대조해 검증하고 안정적인 구조화 진단을 돌려줍니다
선언
function ValidatePDFA4(
const Options: THPDFPDFA4ValidationOptions;
out Issues: THPDFPDFA4ValidationIssues): boolean; overload;
function ValidatePDFA4(
const Options: THPDFPDFA4ValidationOptions;
out Findings: THPDFComplianceFindings): boolean; overload;
유닛
HPDFDoc
프로필 및 심각도 타입
THPDFPDFA4Profile = (
p4pAutomatic,
p4pBase,
p4pEngineering,
p4pAssociatedFiles
);
THPDFPDFA4IssueSeverity = (
p4isWarning,
p4isError
);
THPDFPDFA4Profile은 metadata 추론 또는 명시적 conformance profile을 고르고, THPDFPDFA4IssueSeverity는 참고용 진단과 검증 error를 구분합니다
옵션
| 필드 | 목적 |
|---|---|
Profile | 자동 metadata 기반 감지, base, engineering, associated-file 검증 중 하나를 선택합니다 |
MaxObjects | 반복적인 객체 그래프 순회를 제한하며 기본값은 1,000,000 객체입니다 |
MaxIssues | 보관되는 진단을 제한하며 기본값은 1,024개입니다 |
MaxDecodedBytes | 누적 decoded metadata, ICC, content-stream 바이트를 제한하며 기본값은 64 MiB입니다 |
MaxContentTokens | 누적 content-stream token을 제한하며 기본값은 4,000,000개입니다 |
CheckEmbeddedFonts | 렌더링에 쓰이는 font에 embedded font program이 있는지 검사합니다 |
CheckAnnotationAppearances | 주석 flag와 normal appearance stream을 검사합니다 |
CheckOptionalContent | optional-content 구성 이름과 고유성을 검사합니다 |
CheckColourSpaces | 칠해진 device 색상, ICC profile, output intent, 기본값, 이미지, shading, form, transparency group을 검사합니다 |
CheckTransparency | 칠해진 alpha, soft mask, blend mode, 페이지 수준 blending-space 적용 범위를 검사합니다 |
CheckCompositeFonts | Type 0 descendant, CIDSystemInfo, CMap 호환성, CIDToGIDMap 제약을 검사합니다 |
CheckMetadataPackets | 모든 metadata stream에 대해 UTF-8, packet header, RDF envelope, PDF/A 식별 제약을 검사합니다 |
진단
각 THPDFPDFA4ValidationIssue는 심각도, 안정적인 namespaced code, 해당 ISO 19005-4 조항, 객체 경로, 객체 번호, 알려진 경우 0부터 세는 페이지 인덱스, 사람이 읽을 수 있는 message를 담습니다
THPDFComplianceFindings overload는 같은 순회를 공용 기계 판독 가능 findings 모델로 노출하며, profile은 PDF/A-4, repair 상태는 crsNotAttempted입니다
validator는 PDF 2.0 식별, trailer ID와 암호화 상태, 모든 metadata packet, Info 제약, ICC 헤더와 channel 수, 문서 및 페이지 output intent, 칠해진 device 색상, content-stream array와 중첩 Form XObject에 걸친 상속 graphics state, image mask, shading, transparency, 렌더링 font embedding, 복합 font 관계, 주석과 appearance, AcroForm 제약, 액션과 추가 액션, associated file, optional content, 외부 참조, profile별 3D 또는 첨부 규칙을 다룹니다
색상과 transparency findings는 색상 설정 연산자만이 아니라 실제 칠하기 연산자를 기준으로 하며, content tokenization과 decoded-stream 재사용은 캐시하되 호출마다 자기 페이지 또는 Form 컨텍스트의 상속 graphics state는 새로 평가합니다
decoded-byte, content-token, 객체, 보관 issue 한도는 무한한 작업이 계속되기 전에 안정적인 pdfa4.validation.* findings로 fail closed 합니다
예제
var
Options: THPDFPDFA4ValidationOptions;
Issues: THPDFPDFA4ValidationIssues;
begin
Options := THPDFPDFA4ValidationOptions.Default;
Options.Profile := p4pAutomatic;
if not PDF.ValidatePDFA4(Options, Issues) then
raise Exception.CreateFmt('%s at %s',
[String(Issues[0].Code), String(Issues[0].Path)]);
end;
생성 동작
EndDoc은 '4', '4E', '4F'에 대해 validator를 자동으로 실행하고, error가 남아 있으면 serialization 전에 raise 합니다
PDF/A-4 생성은 trailer Info 항목을 생략하고, PDF/A-4f는 필요한 EmbeddedFiles name tree를 항상 만들며, file-attachment 주석은 embedded stream, Filespec, AF relationship, Catalog AF array, name tree가 함께 출력되는 PDF/A-4f에서만 받아들입니다