Automatic PDF/UA Structure from Layout Trees
THPDFDOMRenderer có thể biến cây bố cục trực quan thành cây cấu trúc logic tương ứng mà không cần cấp phát MCID thủ công
THPDFDOMDocument.GenerateStructure mặc định là True, bật đầu ra PDF có gắn thẻ, tạo một gốc Document và một Sect cho mỗi section, và dùng THPDFDOMDocument.Language khi đích không có ngôn ngữ tài liệu
Mặc định ngữ nghĩa và ghi đè
| Nội dung bố cục | Cấu trúc được tạo |
|---|---|
THPDFDOMText | P, hoặc H1 đến H6 khi HeadingLevel được gán |
THPDFDOMStack và THPDFDOMContainer | Div |
THPDFDOMList | L với các hậu duệ LI, Lbl, và LBody cùng ListNumbering |
THPDFDOMTable | Table, TR, TH, và TD, với phạm vi cột trên ô tiêu đề |
THPDFDOMImage | Figure với văn bản thay thế |
| Tiêu đề đầu, chân trang, tiêu đề bảng lặp lại, spacer, và hộp trang trí | Nội dung được đánh dấu Artifact |
Mỗi thành phần cũng cung cấp SemanticRole, SemanticLanguage, AlternativeText, ActualText, ExpansionText, và Artifact để kiểm soát tường minh
Ví dụ tài liệu có thể truy cập
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);
Trình dựng từ chối một tiêu đề đầu tiên trên H1, các mức tiêu đề bị bỏ qua, vai trò list hoặc table mồ côi, và một figure PDF/UA không có văn bản thay thế trước khi ghi cấu trúc không hợp lệ
Danh tính xuyên trang và thứ tự đọc
Một thành phần logic giữ một phần tử cấu trúc khi nó tách trên nhiều trang
Mỗi phần tiếp nối hiển thị nhận một MCID theo trang và một dictionary MCR trỏ từ phần tử cấu trúc hiện có đến đúng trang
ParentTree của trang ánh xạ mọi MCID trở lại cùng phần tử cấu trúc đó, trong khi bản sao tiếp nối giữ danh tính logic mà không sao chép văn bản nguồn hoặc các hàng bảng
Tiêu đề bảng lặp lại trên các trang tiếp nối là artifact để sự lặp lại trực quan của chúng không sắp xếp lại tiêu đề bảng logic lên trước các hàng thân trước đó
API tạo tác an toàn tiếp nối trực tiếp
BeginTaggedContentForStructure cấp phát một MCID và mở nội dung được đánh dấu cho một phần tử cấu trúc đã tồn tại
AppendStructureMarkedContent nối một trang và MCID tường minh dưới dạng MCR và cập nhật ParentTree của trang
Hãy dùng các phương thức cấp thấp này khi một trình dựng bố cục tùy chỉnh sở hữu logic tiếp nối bên ngoài HPDFLayoutDOM
Thống kê và tương thích
THPDFDOMRenderStatistics báo cáo số phần tử cấu trúc, nội dung được đánh dấu, và artifact cùng với số trang, vị trí đặt, lần tách, và độ sâu tiếp nối
Đặt GenerateStructure thành False trước khi dựng khi cần đầu ra không gắn thẻ tương thích byte