PDF/UA-2 구조 작성, 검증 및 복구

HotPDF는 명시적 네임스페이스 정체성과 바운딩된 처리 비용을 유지하면서 혼합 PDF 1.7 및 PDF 2.0 구조 의미를 구축, 검증 및 원자적으로 복구할 수 있습니다

네임스페이스 인식 작성

AddStructureElement는 PDF/UA-2 역할이 요구할 때 필수 최상위 Document 요소를 포함하여 PDF 2.0 표준 구조 네임스페이스를 할당합니다

AddStructureElementNS는 명시적으로 네임스페이스 지정된 요소를 만들고, AddStructRoleMapNS는 네임스페이스 경계를 넘어 전이적으로 해결될 수 있는 이름 또는 두 항목 배열 매핑을 추가합니다

네임스페이스 사전은 간접적이며 URI별로 한 번 등록되고 StructTreeRoot/Namespaces를 통해 전달됩니다

속성 및 의미 도우미

API용도
SetStructureAttributeName소유자별 사전에 이름 값 속성을 추가하거나 교체하고 사용자 정의 소유자를 네임스페이스에 바인딩할 수 있습니다
SetStructureAttributeNumberRowSpan 또는 ColSpan 같은 정수 값 구조 속성을 추가하거나 교체합니다
SetStructureTableCellHeaders고유한 ID 값으로 표 머리글 셀을 식별하는 비어 있지 않은 Headers 배열을 씁니다
SetStructurePronunciationPDF 2.0 구조 요소에 상속된 PhoneticAlphabet 이름과 정확한 Phoneme 교체를 씁니다
AddPronunciationLexicon간접 application/pls+xml 파일을 내장하고 해당 Filespec을 조회 순서로 StructTreeRoot/PronunciationLexicon에 추가합니다
AssociateFileWithStructure간접 Filespec을 AF를 통해 구조 요소와 연결합니다
AddAccessibleFormulaAlt, ActualText 또는 둘 다 있는 Formula를 만듭니다
AddAccessibleMathMLFormula공식을 만들고, 설명된 application/mathml+xml 파일을 내장하고, 구조와 연결하며, MathML 네임스페이스 하위 요소를 추가합니다

바운딩된 단일 패스 검증

ValidatePDFUA2Structure는 유지된 모든 진단을 THPDFUA2ValidationIssues 배열로 반환하고, 하나 이상의 진단이 uisError 심각도를 가질 때 False를 반환합니다

검증기는 순환 감지로 네임스페이스 인식 역할 맵을 해결하고, 최상위 문서, 부모-자식 계층, 부모 백링크, 속성 소유자와 개정, 주석 StructParent, 부모 트리 및 OBJR 소유권, 연결 파일, 제목, 목록, 표, Ruby, Warichu, 발음 힌트, 공식 및 MathML을 확인합니다

표 검증은 MaxObjects 안에서만 양수 행 및 열 범위를 확장하고, 교차 셀과 불규칙한 행 또는 행 그룹 지오메트리를 거부하며, 소유 표 안에서 Headers를 해결하고, 중복, 자기 및 순환 헤더 참조를 감지하며, Scope 또는 첫 행 및 첫 열 배치가 결정할 때만 암시적 연결을 수락합니다

목록 검증은 완전한 PDF 2.0 ListNumbering 집합을 인식하고, 레이블 의미를 적용하며, ContinuedList 및 정렬된 동일 수준 ContinuedFrom 참조를 확인하고, Lbl 및 LBody 밖의 연속 순환 또는 직접 실제 콘텐츠를 거부합니다

Ruby 하위 요소는 RB,RT 또는 RB,RP,RT,RP여야 하고, Warichu 하위 요소는 WP,WT,WP여야 하며, 발음 항목은 PDF 객체 유형을 유지하고, 모든 발음 사전은 간접 내장 PLS Filespec이어야 합니다

간접 객체 스캔, 순회 깊이, 역할 맵 깊이, 확장된 표 셀, 유지된 이슈 개수 및 적대적 컬렉션 처리는 바운딩되므로 검증이 신뢰할 수 없는 구조 트리에 대해 예측 가능합니다

공유 규정 준수 결과

THPDFComplianceFindings 검증 오버로드는 공유 프로필, 심각도, 안정적인 규칙 ID, 표준 조항, 논리 경로, 간접 객체 번호 및 0부터 시작하는 페이지 인덱스와 함께 동일한 진단을 반환합니다

상세 복구 오버로드는 바운딩된 복구 전 및 복구 후 결과를 비교하여 적용, 해결되지 않음, 롤백 또는 실패한 복구 작업을 식별하고, 계산된 복구 계열 요약을 추가합니다

ComplianceFindingsToJSON은 버전 지정 hotpdf.compliance.findings.v1 스키마 아래에서 결정적 순서를 유지하고 알 수 없는 객체 또는 페이지 위치를 null로 나타냅니다

원자적 구조 복구

RepairPDFUA2Structure는 copy-on-write 그래프 트랜잭션 안에서 실행되고, 중복 또는 등록되지 않은 네임스페이스 사전을 정규화하며, 구조 및 역할 맵 네임스페이스 참조를 재작성하고, 표준 구조 네임스페이스를 복구하며, 구조 속성 네임스페이스와 개정을 정규화하고, 결정적 목록, 표, Ruby, Warichu, 발음, 대체 텍스트, 언어 상속, 제목 순서 및 Artifact 태그 결함을 복구합니다

변형 후 동일한 검증기가 후보 그래프를 확인하고, 기본 정책은 임의의 PDF/UA-2 오류가 남아 있을 때 모든 변경을 롤백합니다

검증 정책

THPDFUA2ValidationOptions.Default로 시작하고 워크플로별 결정만 변경합니다

THPDFUA2HeadingPolicy는 제목 처리를 선택하고, THPDFUA2IssueSeverity는 경고를 오류와 구분하며, 각 THPDFUA2ValidationIssue는 안정적인 코드, 구조 경로, 심각도 및 메시지를 지닙니다

권장 워크플로

  1. BeginDoc 전에 PDFUACompliance를 활성화하고 PDFUAPart = 2를 선택하며 Lang을 설정합니다
  2. 최상위 Document 하나를 만들고 표준 또는 명시적으로 네임스페이스 지정된 역할로 의미 하위 요소를 만듭니다
  3. 구조 도우미로 주석과 연결 파일을 등록하고, SetStructurePronunciation으로 발음 힌트를 쓰며, 원하는 조회 순서로 AddPronunciationLexicon을 통해 PLS 파일을 추가합니다
  4. 애플리케이션이 모든 진단을 한 번에 필요로 할 때 EndDoc 전에 ValidatePDFUA2Structure를 실행하고, 결정적 네임스페이스, 구조 및 접근성 복구를 위해 RepairPDFUA2Structure를 호출하며, CI가 표준 JSON을 요구할 때 공유 결과 오버로드를 선택합니다
  5. EndDoc도 PDF/UA-2 문서에 대한 엄격한 기본 정책을 적용하므로 출력 전에 모든 오류를 해결합니다

추가 정보: 자동 레이아웃 구조, ValidatePDFUA2Structure, RepairPDFUA2Structure, ComplianceFindingsToJSON, SetStructurePronunciation, AddPronunciationLexicon, AddStructureElement, BeginTaggedContentForStructure, AppendStructureMarkedContent