레이아웃 트리에서 자동 PDF/UA 구조 생성
THPDFDOMRenderer는 수동 MCID 할당 없이 시각적 레이아웃 트리를 일치하는 논리적 구조 트리로 바꿀 수 있습니다
THPDFDOMDocument.GenerateStructure는 기본적으로 True이며, tagged PDF 출력을 활성화하고, Document 루트 하나와 각 섹션마다 Sect 하나를 만들며, 대상에 문서 언어가 없을 때 THPDFDOMDocument.Language를 사용합니다
의미 기본값 및 재정의
| 레이아웃 콘텐츠 | 생성된 구조 |
|---|---|
THPDFDOMText | P, 또는 HeadingLevel이 지정되면 H1부터 H6 |
THPDFDOMStack 및 THPDFDOMContainer | Div |
THPDFDOMList | LI, Lbl, LBody 하위 요소와 ListNumbering을 갖는 L |
THPDFDOMTable | 헤더 셀에 column scope를 가진 Table, TR, TH, TD |
THPDFDOMImage | 대체 텍스트가 있는 Figure |
| 머리글, 바닥글, 반복 표 헤더, 스페이서, 장식 박스 | Artifact 마크 콘텐츠 |
모든 컴포넌트는 명시적 제어를 위해 SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText, Artifact도 노출합니다
접근성 문서 예제
Document.Language := 'en-US';
Section := Document.AddSection;
Section.Header := THPDFDOMText.Create('Quarterly report');
Section.Body.AddHeading('Results', 1, 'Title');
List := THPDFDOMList.Create('Decimal', 'Steps');
List.AddItem('1.', 'Review the totals');
Section.Body.Add(List);
Table := THPDFDOMTable.Create('Summary');
Table.AddColumn;
Table.AddColumn;
Header := Table.AddRow(18, True);
Header[0].Text := 'Name';
Header[1].Text := 'Value';
Row := Table.AddRow(18);
Row[0].Text := 'Alpha';
Row[1].Text := '42';
Section.Body.Add(Table);
Section.Body.Add(THPDFDOMImage.Create(Bitmap, 120, 80,
'Revenue chart by quarter', 'Chart'));
PDF.PDFUACompliance := True;
PDF.PDFUAPart := 2;
Statistics := Renderer.Render(Document, PDF);
렌더러는 잘못된 구조를 쓰기 전에 H1 위의 첫 제목, 건너뛴 제목 수준, 고아 목록 또는 표 역할, 대체 텍스트가 없는 PDF/UA 그림을 거부합니다
페이지 간 항등성 및 읽기 순서
논리적 컴포넌트는 여러 페이지로 나뉠 때 구조 요소 하나를 유지합니다
각 보이는 연속 조각은 페이지 로컬 MCID와, 기존 구조 요소에서 올바른 페이지를 가리키는 MCR 사전을 받습니다
페이지 ParentTree는 모든 MCID를 같은 그 구조 요소로 역매핑하며, 연속 복제본은 소스 텍스트나 표 행을 복사하지 않고 논리적 항등성을 보존합니다
연속 페이지의 반복 표 헤더는 아티팩트이므로 시각적 반복이 논리적 표 헤더를 앞선 본문 행보다 앞에 재배치하지 않습니다
직접 연속 안전 작성 API
BeginTaggedContentForStructure는 이미 존재하는 구조 요소에 대해 MCID를 할당하고 마크 콘텐츠를 엽니다
AppendStructureMarkedContent는 명시적 페이지와 MCID를 MCR로 추가하고 페이지 ParentTree를 갱신합니다
사용자 정의 레이아웃 렌더러가 HPDFLayoutDOM 외부에서 연속 논리를 소유할 때 이러한 저수준 메서드를 사용하십시오
통계 및 호환성
THPDFDOMRenderStatistics는 페이지, 배치, 분할, 연속 깊이와 함께 구조 요소, 마크 콘텐츠, 아티팩트 개수를 보고합니다
바이트 호환의 untagged 출력이 필요하면 렌더링 전에 GenerateStructure를 False로 설정하십시오