Cấu trúc logic
Cấu trúc logic
PDF có thẻ bao gồm một cây cấu trúc logic định nghĩa thứ tự phân cấp ngữ nghĩa của tài liệu — các đoạn văn, tiêu đề, bảng, hình ảnh và danh sách. Aspose.PDF FOSS for .NET cung cấp API TaggedContent để xây dựng và kiểm tra cấu trúc này, điều này là cần thiết cho việc tuân thủ khả năng truy cập PDF/UA.
Truy cập nội dung được gắn thẻ
using var doc = new Document();
var tagged = doc.TaggedContent;
tagged.SetTitle("Accessible Document");
tagged.SetLanguage("en-US");Tạo các phần tử cấu trúc
ITaggedContent cung cấp các phương thức factory cho mọi loại phần tử cấu trúc tiêu chuẩn. Các phần tử được lắp ráp thành cây bằng cách gọi AppendChild.
var root = tagged.RootElement;
var heading = tagged.CreateHeaderElement(1);
heading.SetText("Chapter 1");
root.AppendChild(heading);
var paragraph = tagged.CreateParagraphElement();
paragraph.SetText("This is the first paragraph.");
root.AppendChild(paragraph);Bảng có cấu trúc
TableElement tạo các bảng có khả năng truy cập với các phần đầu, thân và chân.
var table = tagged.CreateTableElement();
root.AppendChild(table);
var thead = table.CreateTHead();
var headerRow = thead.CreateTR();
headerRow.CreateTH().SetText("Name");
headerRow.CreateTH().SetText("Value");
var tbody = table.CreateTBody();
var dataRow = tbody.CreateTR();
dataRow.CreateTD().SetText("Width");
dataRow.CreateTD().SetText("612");Minh hoạ và hình vẽ
IllustrationElement bao bọc các hình ảnh trong cây cấu trúc.
var figure = tagged.CreateFigureElement();
figure.SetImage("chart.png");
figure.SetAlternativeText("Sales chart for Q4");
root.AppendChild(figure);Các loại phần tử cấu trúc
API hỗ trợ đầy đủ các loại phần tử cấu trúc PDF:
- Cấp độ khối: Paragraph, Heading (H1-H6), List, ListItem, Table, BlockQuote, Code
- Nội tuyến: Span, Link, Annotation, Figure, Formula
- Nhóm: Division, Article, Section, Part
Mẹo và Thực hành tốt nhất
- Luôn đặt
TitlevàLanguagetrênTaggedContentđể tuân thủ PDF/UA. - Xây dựng cây cấu trúc từ trên xuống: tạo các phần tử, sau đó thêm các phần tử con.
- Sử dụng
SetAlternativeTexttrên các phần tử figure để hỗ trợ trình đọc màn hình. - Gắn thẻ bảng bằng
THead,TBody,TFootđể đảm bảo ngữ nghĩa bảng đúng. - Xác thực tuân thủ PDF/UA bằng
PdfFormatConversionOptions(xem Hướng dẫn chuyển đổi).
Các vấn đề thường gặp
| Issue | Cause | Fix |
|---|---|---|
| Xác thực PDF/UA thất bại | Cây cấu trúc thiếu các phần tử bắt buộc | Đảm bảo mọi nội dung có các phần tử cấu trúc tương ứng |
| Thứ tự tiêu đề sai | H2 xuất hiện trước H1 | Tuân thủ thứ tự tiêu đề tuần tự |
| Hình ảnh không có văn bản thay thế | SetAlternativeText chưa được gọi | Luôn cung cấp văn bản thay thế cho hình minh họa |
| Bảng không được trình đọc màn hình nhận dạng | Thiếu cấu trúc THead/TBody | Sử dụng API cấu trúc bảng đầy đủ |
Câu hỏi thường gặp
PDF có gắn thẻ là gì?
PDF có thẻ bao gồm một cây cấu trúc logic ánh xạ nội dung trực quan sang các phần tử ngữ nghĩa (tiêu đề, đoạn văn, bảng), cho phép các công cụ trợ năng và việc tái bố cục nội dung.
PDF có gắn thẻ có giống với PDF/UA không?
PDF/UA là một tiêu chuẩn yêu cầu gắn thẻ cộng với các quy tắc truy cập bổ sung.
Các PDF đã gắn thẻ là điều kiện tiên quyết để tuân thủ PDF/UA.
Tôi có thể gắn thẻ một PDF hiện có không?
API TaggedContent hoạt động tốt nhất với các tài liệu được tạo từ đầu. Đối với các PDF hiện có, hãy kiểm tra cây cấu trúc thông qua Document.TaggedContent.
Tóm tắt Tham chiếu API
| Lớp / Phương thức | Mô tả |
|---|---|
TaggedContent | Điểm vào cho các thao tác cấu trúc logic |
TaggedContent.SetTitle | Đặt tiêu đề tài liệu cho khả năng truy cập |
TaggedContent.SetLanguage | Đặt ngôn ngữ tài liệu |
ITaggedContent | Giao diện với các phương thức nhà máy cho tất cả các loại phần tử |
StructureElement | Lớp cơ sở cho tất cả các phần tử cấu trúc |
StructureElement.AppendChild | Thêm một phần tử con vào cây |
StructureElement.SetText | Đặt nội dung văn bản của một phần tử |
TableElement | Phần tử cấu trúc bảng có khả năng truy cập |
TableElement.CreateTHead | Tạo phần tiêu đề bảng |
TableElement.CreateTBody | Tạo phần thân bảng |
TableTRElement | Phần tử hàng bảng |
TableTRElement.CreateTD | Thêm ô dữ liệu |
TableTRElement.CreateTH | Thêm ô tiêu đề |
IllustrationElement | Phần tử cấu trúc hình ảnh/đồ họa |
IllustrationElement.SetImage | Gắn một hình ảnh vào minh họa |