THotPDF.RepairPDFUA2Structure Method

copy-on-write 그래프 트랜잭션 안에서 복구 가능한 PDF/UA-2 네임스페이스, 속성, 구조, 접근성 결함을 복구하고 커밋 전에 후보 그래프를 검증합니다

선언

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues): boolean; overload;

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues;
  out Findings: THPDFComplianceFindings): boolean; overload;

유닛

HPDFDoc

복구 옵션

THPDFUA2RepairOptions.Default에서 시작해 입력 워크플로우에 필요한 정책 결정만 재정의합니다

필드목적
NormalizeDuplicateNamespacesURI마다 하나의 정규 indirect 사전으로 StructTreeRoot/Namespaces를 재구성하고 충돌하는 role map은 거부합니다
RegisterReferencedNamespaces구조 요소, 속성, namespace 인식 role map이 참조하는 유효한 네임스페이스 사전을 등록합니다
RepairStandardStructureNamespaces네임스페이스가 없거나 잘못된 표준 role에 PDF 2.0 네임스페이스를 할당하고 최상위 Document는 항상 정규화합니다
RepairAttributeNamespaces속성 네임스페이스 참조를 정규화하고 표준 owner에서 잘못된 네임스페이스 항목을 제거합니다
RepairAttributeRevisions음수 또는 소수 revision 번호를 정규화하고 속성 배열에서 고아 revision 항목을 제거합니다
RepairListSemantics번호 매기기, continuation 플래그, 잘못된 continuation 유형, 위치가 잘못된 caption 하나를 목록 콘텐츠를 새로 만들지 않고 정규화합니다
RepairTableSemantics잘못된 span과 scope를 정규화하고, 잘못된 테이블 로컬 헤더 참조를 제거하며, 위치가 잘못된 caption 하나를 옮깁니다
RepairRubyWarichuSequences정확히 요구되는 role multiset이 이미 존재할 때만 자식 순서를 재배열합니다
RepairPronunciationHints잘못된 유형의 힌트를 제거하고, 유효하지 않은 lexicon 참조를 정리하며, 내장 PLS MIME subtype을 정규화합니다
RepairMissingAlternateTextFigure, Formula, Form의 없는 Alt를 기존 제목, 확장 텍스트, 같은 MCID의 추출 텍스트, 명시적 fallback 순서로 복원합니다
RepairLanguageInheritance유효한 구조 루트 또는 명시적 기본 언어를 Catalog로 승격하고, 상속이 모호하지 않을 때 잘못되거나 중복인 구조 수준 언어 항목을 제거합니다
RepairHeadingOrder문서 순서를 유지하면서 첫 표제 결함과 건너뛴 수준 결함만 다시 번호를 매깁니다
RepairArtifactTaggingproducer와 로드된 페이지 콘텐츠에 대해 Artifact 구조 요소와 연관된 marked-content 태그를 다시 씁니다
AllowDocumentFragmentHeadingStarts복구와 복구 후 검증 모두에서 DocumentFragment마다 표제 컨텍스트를 초기화합니다
RollbackOnValidationFailure복구 후에도 PDF/UA-2 오류가 하나라도 남으면 원래 그래프를 복원합니다
CustomAttributeNamespaceURI의미를 안전하게 추론할 수 없는 사용자 정의 속성 owner에 명시적 네임스페이스를 제공하며, 기본값인 빈 값은 fail-closed로 동작합니다
DefaultLanguageCatalog와 구조 루트 모두 유효한 언어를 담고 있지 않을 때만 BCP-47 언어 태그를 제공합니다
FallbackAlternateText문서에서 유래한 모든 소스가 실패한 뒤 호출자가 검토한 대체 텍스트를 제공하며, 기본값인 빈 값은 절대 설명을 지어내지 않습니다
MaxGeneratedAlternateTextCharacters같은 MCID 텍스트 추출에 상한을 두며 기본값은 4,096 UTF-16 code unit입니다
MaxObjects객체 그래프 스캔에 상한을 두며 기본값은 1,000,000 객체입니다
MaxRepairs보존되는 변경에 상한을 두며 기본값은 100,000 복구 작업입니다

복구 보고서

THPDFUA2RepairReport는 그래프가 변경되었는지 롤백되었는지, 한도를 초과했는지, 복구 후 검증 상태, 조사한 객체 수, 남은 오류, 대체 텍스트·언어 항목·표제 수준·Artifact 태그를 포함한 각 복구 계열의 개수를 보고합니다

UnresolvedAlternateTextCount, UnresolvedLanguageCount, UnresolvedArtifactCount는 자동 변경과 구별되는, 아직 작성자 검토가 필요한 의미를 표시합니다

반환되는 THPDFUA2ValidationIssues 배열에는 검증이 실패한 경우 복구 후 진단이 담기고, resource bound 또는 충돌하는 중복 role map으로 트랜잭션이 중단된 경우 안정적인 복구 전용 진단이 담깁니다

상세 overload는 crsApplied, crsUnresolved, crsRolledBack, crsFailed로 표시된 복구 전 finding과 계열별 개수 요약도 함께 반환합니다

이 provenance overload는 제한된 복구 전 검증 패스를 한 번 더 수행합니다. 최종 보고서와 이슈만 필요하다면 기존 3-output overload를 사용하세요

원자성과 안전성

예제

var
  Options: THPDFUA2RepairOptions;
  Report: THPDFUA2RepairReport;
  Issues: THPDFUA2ValidationIssues;
begin
  Options := THPDFUA2RepairOptions.Default;
  Options.DefaultLanguage := 'en-US';
  Options.CustomAttributeNamespaceURI :=
    'https://example.com/ns/accessibility-attributes';
  if not PDF.RepairPDFUA2Structure(Options, Report, Issues) then
    raise Exception.CreateFmt('%s at %s',
      [String(Issues[0].Code), String(Issues[0].Path)]);
end;

관련 API