|
1 | 1 | --- |
2 | | -"date": "2025-04-14" |
3 | | -"description": "了解如何使用 Aspose.PDF for Java 创建可访问且带标签的 PDF 文档。确保您的 PDF 文档内容全面,并符合可访问性标准。" |
4 | | -"title": "使用 Aspose.PDF 在 Java 中创建带有标记内容的可访问 PDF" |
5 | | -"url": "/zh/java/advanced-features/create-accessible-pdfs-tagged-content-java-aspose-pdf/" |
6 | | -"weight": 1 |
| 2 | +date: '2025-12-01' |
| 3 | +description: 学习如何使用 Aspise.PDF for Java 创建可访问的 PDF 文件、生成 PDF 表格,并为屏幕阅读器标记 PDF。 |
| 4 | +keywords: |
| 5 | +- accessible PDFs with Java |
| 6 | +- Aspose.PDF for Java |
| 7 | +- tagged PDF creation |
| 8 | +language: zh |
| 9 | +title: 使用 Aspose.PDF 在 Java 中创建带标签内容的可访问 PDF |
| 10 | +url: /java/advanced-features/create-accessible-pdfs-tagged-content-java-aspose-pdf/ |
| 11 | +weight: 1 |
7 | 12 | --- |
8 | 13 |
|
9 | 14 | {{< blocks/products/pf/main-wrap-class >}} |
10 | 15 |
|
11 | 16 | {{< blocks/products/pf/main-container >}} |
12 | 17 |
|
13 | 18 | {{< blocks/products/pf/tutorial-page-section >}} |
14 | | -# 使用 Aspose.PDF 在 Java 中创建带有标记内容的可访问 PDF |
15 | | -创建可访问的 PDF 文档对于确保所有用户(包括残障人士)都能访问和理解您的内容至关重要。本教程将指导您使用 Aspose.PDF for Java 创建带标签的 PDF 文档。利用这个强大的库,您将能够创建结构化、语义丰富的 PDF,并使其能够被屏幕阅读器和其他辅助技术访问。 |
| 19 | +# 使用 Aspose.PDF 在 Java 中创建带标签的可访问 PDF |
16 | 20 |
|
17 | | -## 您将学到什么 |
18 | | -- 使用 Aspose.PDF for Java 设置您的环境 |
19 | | -- 创建带有标记内容的新 PDF 文档 |
20 | | -- 使用页眉、正文和页脚部分构建 PDF |
21 | | -- 以可访问的格式保存最终文档 |
| 21 | +创建 **accessible PDF** 文档对于确保所有用户(包括依赖辅助技术的用户)都能阅读和交互您的内容至关重要。在本教程中,您将学习如何使用标签内容 **create accessible PDF** 文件、生成 PDF 表格,并设置文档语言,以便屏幕阅读器能够正确解释结构。 |
22 | 22 |
|
23 | | -在开始之前,让我们先深入了解一下先决条件。 |
| 23 | +## 快速回答 |
| 24 | +- **我应该使用哪个库?** Aspose.PDF for Java. |
| 25 | +- **实现需要多长时间?** 基本标签 PDF 大约需要 15‑20 分钟。 |
| 26 | +- **我需要许可证吗?** 免费试用可用于开发;生产环境需要永久许可证。 |
| 27 | +- **我可以生成表格吗?** 可以——API 允许您创建并样式化带标签结构的 PDF 表格。 |
| 28 | +- **如何让 PDF 被屏幕阅读器读取?** 为内容添加标签,设置语言,并为结构元素提供替代文本。 |
24 | 29 |
|
25 | | -## 先决条件 |
26 | | -在开始之前,请确保您已: |
27 | | -- **Java 开发工具包 (JDK)** 安装在您的系统上。 |
28 | | -- 用于编写 Java 代码的合适的 IDE,例如 IntelliJ IDEA 或 Eclipse。 |
29 | | -- 对 Java 编程和 PDF 概念有基本的了解。 |
| 30 | +## 什么是 “create accessible pdf”? |
| 31 | +**accessible PDF** 包含描述标题、表格、段落和其他元素的逻辑结构(标签)。该结构使屏幕阅读器和其他辅助工具能够以有意义的方式向视力或认知障碍用户呈现文档。 |
30 | 32 |
|
31 | | -### 所需的库和依赖项 |
32 | | -要使用 Aspose.PDF for Java,请将该库添加到您的项目中。您可以使用 Maven 或 Gradle 进行以下操作: |
| 33 | +## 为什么要给 PDF 加标签? |
| 34 | +给 PDF 加标签(**how to tag pdf** 过程)可以为您提供: |
| 35 | +- **改进的导航**,适用于屏幕阅读器和键盘用户。 |
| 36 | +- **符合** WCAG 2.1 和 PDF/UA 可访问性标准。 |
| 37 | +- **更好的可搜索性**,因为文本被语义化索引。 |
33 | 38 |
|
34 | | -**Maven** |
35 | | -将以下依赖项添加到您的 `pom.xml` 文件: |
| 39 | +## 前置条件 |
| 40 | +在开始之前,请确保您拥有: |
| 41 | +- 已安装 Java Development Kit (JDK)。 |
| 42 | +- 如 IntelliJ IDEA 或 Eclipse 的 IDE。 |
| 43 | +- 基本的 Java 知识和对 PDF 概念的了解。 |
| 44 | + |
| 45 | +### 必需的库和依赖项 |
| 46 | +使用 Maven 或 Gradle 将 Aspose.PDF for Java 添加到您的项目中。 |
| 47 | + |
| 48 | +**Maven** |
36 | 49 | ```xml |
37 | 50 | <dependency> |
38 | 51 | <groupId>com.aspose</groupId> |
|
41 | 54 | </dependency> |
42 | 55 | ``` |
43 | 56 |
|
44 | | -**Gradle** |
45 | | -将此行包含在您的 `build.gradle` 文件: |
| 57 | +**Gradle** |
46 | 58 | ```gradle |
47 | 59 | implementation 'com.aspose:aspose-pdf:25.3' |
48 | 60 | ``` |
49 | 61 |
|
50 | 62 | ### 许可证获取 |
51 | | -Aspose.PDF for Java 提供免费试用,让您在购买前测试其功能。您可以获取临时许可证 [这里](https://purchase.aspose.com/temporary-license/)。如果您决定购买,请按照其网站上的说明进行操作。 |
| 63 | +Aspose.PDF for Java 提供免费试用。您可以在[此处](https://purchase.aspose.com/temporary-license/)获取临时许可证。生产使用时,请购买完整许可证。 |
52 | 64 |
|
53 | | -## 为 Java 设置 Aspose.PDF |
54 | | -首先,使用必要的配置设置您的项目。以下是在一个简单的 Java 应用程序中初始化和设置 Aspose.PDF 的方法: |
55 | | -1. **下载** JAR 文件来自 [Aspose 的发布网站](https://releases.aspose.com/pdf/java/) 如果不使用 Maven/Gradle。 |
56 | | -2. 将其添加到项目的构建路径。 |
| 65 | +## 设置 Aspose.PDF for Java |
| 66 | +如果您未使用 Maven/Gradle,请从[Aspose 发布站点](https://releases.aspose.com/pdf/java/)下载 JAR 并将其添加到项目的构建路径中。 |
| 67 | + |
| 68 | +以下是一个简单代码片段,用于通过创建空 PDF 来验证您的设置: |
57 | 69 |
|
58 | | -以下是创建 PDF 文档的基本初始化代码片段: |
59 | 70 | ```java |
60 | 71 | import com.aspose.pdf.Document; |
61 | 72 |
|
62 | 73 | public class PdfCreator { |
63 | 74 | public static void main(String[] args) { |
64 | | - // 初始化 Aspose.PDF |
| 75 | + // Initialize Aspose.PDF |
65 | 76 | Document doc = new Document(); |
66 | 77 |
|
67 | | - // 保存空文档以检查设置 |
| 78 | + // Save the empty document to check setup |
68 | 79 | doc.save("output/EmptyDocument.pdf"); |
69 | 80 |
|
70 | 81 | System.out.println("Setup complete and document created successfully."); |
71 | 82 | } |
72 | 83 | } |
73 | 84 | ``` |
74 | | -这个简单的例子使用 Aspose.PDF 初始化一个新的 PDF 文档。 |
75 | 85 |
|
76 | | -## 实施指南 |
77 | | -### 创建带有标记内容的新 PDF |
78 | | -**概述** |
79 | | -PDF 中的带标签内容提供了逻辑结构,增强了可访问性。本部分将指导您创建新的 PDF 并将其配置为带标签的内容。 |
| 86 | +## 实现指南 |
| 87 | + |
| 88 | +### 创建带标签内容的新 PDF |
| 89 | +**概述** – 标签内容提供逻辑层次结构,可提升可访问性。以下步骤将指导您创建 PDF、启用标签并填充样式化表格。 |
| 90 | + |
| 91 | +#### 步骤 1:初始化文档并启用标签 |
| 92 | +首先,创建 `Document` 实例并获取 `ITaggedContent` 接口。我们还 **set the PDF language**(**set pdf language** 步骤),以便屏幕阅读器了解文档的语言环境。 |
80 | 93 |
|
81 | | -#### 步骤 1:初始化文档 |
82 | | -首先,创建一个 `Document` 并获得 `ITaggedContent` 界面: |
83 | 94 | ```java |
84 | 95 | import com.aspose.pdf.*; |
85 | 96 |
|
86 | 97 | public class TaggedPdfCreator { |
87 | 98 | public static void main(String[] args) { |
88 | 99 | String outputDir = "YOUR_OUTPUT_DIRECTORY"; |
89 | 100 |
|
90 | | - // 创建新的 PDF 文档 |
| 101 | + // Create a new PDF document |
91 | 102 | Document document = new Document(); |
92 | 103 |
|
93 | | - // 获取标记内容 |
| 104 | + // Obtain tagged content |
94 | 105 | ITaggedContent taggedContent = document.getTaggedContent(); |
95 | 106 |
|
96 | | - // 设置标题和语言以实现无障碍功能 |
| 107 | + // Set the title and language for accessibility purposes |
97 | 108 | taggedContent.setTitle("Example table row style"); |
98 | 109 | taggedContent.setLanguage("en-US"); |
99 | 110 |
|
100 | | - // 继续添加结构化元素 |
| 111 | + // Proceed to add structured elements |
101 | 112 | } |
102 | 113 | } |
103 | 114 | ``` |
104 | | -#### 步骤 2:添加结构元素 |
105 | | -定义根元素,创建带有表头、正文和表脚的表结构: |
| 115 | + |
| 116 | +#### 步骤 2:添加结构元素(How to generate PDF table) |
| 117 | +接下来,定义根元素并创建包含标题、主体和页脚的表格结构。这演示了 **generate pdf table** 功能,同时保持内容完整标签化。 |
| 118 | + |
106 | 119 | ```java |
107 | 120 | import com.aspose.pdf.tagged.logicalstructure.elements.bls.*; |
108 | 121 |
|
109 | | -// 获取根结构元素 |
| 122 | +// Get root structure element |
110 | 123 | StructureElement rootElement = taggedContent.getRootElement(); |
111 | 124 |
|
112 | | -// 创建新的表结构元素 |
| 125 | +// Create a new table structure element |
113 | 126 | TableElement tableElement = taggedContent.createTableElement(); |
114 | 127 | rootElement.appendChild(tableElement); |
115 | 128 |
|
116 | | -// 向表添加页眉、正文和页脚 |
| 129 | +// Add header, body, and footer to the table |
117 | 130 | TableTHeadElement tableTHeadElement = tableElement.createTHead(); |
118 | 131 | TableTBodyElement tableTBodyElement = tableElement.createTBody(); |
119 | 132 | TableTFootElement tableTFootElement = tableElement.createTFoot(); |
120 | 133 | ``` |
121 | | -#### 步骤 3:填充表格元素 |
122 | | -将带有样式单元格的行添加到表主体: |
| 134 | + |
| 135 | +#### 步骤 3:填充表格元素(Styling rows for screen reader PDF) |
| 136 | +现在我们添加行,设置样式,并提供替代文本。替代文本确保表格对 **screen reader PDF** 用户可理解。 |
| 137 | + |
123 | 138 | ```java |
124 | 139 | int rowCount = 7; |
125 | 140 | int colCount = 3; |
126 | 141 |
|
127 | | -// 添加带有列标题的标题行 |
| 142 | +// Add a header row with column titles |
128 | 143 | TableTRElement headTrElement = tableTHeadElement.createTR(); |
129 | 144 | headTrElement.setAlternativeText("Head Row"); |
130 | 145 | for (int colIndex = 0; colIndex < colCount; colIndex++) { |
131 | 146 | TableTHElement thElement = headTrElement.createTH(); |
132 | 147 | thElement.setText(String.format("Head %s", colIndex)); |
133 | 148 | } |
134 | 149 |
|
135 | | -// 使用样式单元格向表体添加行 |
| 150 | +// Add rows to the table body with styled cells |
136 | 151 | for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { |
137 | 152 | TableTRElement trElement = tableTBodyElement.createTR(); |
138 | 153 | trElement.setAlternativeText(String.format("Row %s", rowIndex)); |
139 | 154 |
|
140 | | - // 设置行样式 |
| 155 | + // Set row styles |
141 | 156 | trElement.setBackgroundColor(Color.getLightSeaGreen()); |
142 | 157 | trElement.setBorder(new BorderInfo(BorderSide.All, 0.75F, Color.getDarkGray())); |
143 | 158 | trElement.setDefaultCellBorder(new BorderInfo(BorderSide.All, 0.50F, Color.getBlue())); |
144 | 159 | trElement.setMinRowHeight(100.0); |
145 | 160 | trElement.setFixedRowHeight(120.0); |
146 | 161 |
|
147 | | - // 设置此行单元格的默认文本状态 |
| 162 | + // Set default text state for cells in this row |
148 | 163 | TextState cellTextState = new TextState(); |
149 | 164 | cellTextState.setForegroundColor(Color.getRed()); |
150 | 165 | trElement.setDefaultCellTextState(cellTextState); |
151 | 166 |
|
152 | | - // 将单元格添加到行 |
| 167 | + // Add cells to the row |
153 | 168 | for (int colIndex = 0; colIndex < colCount; colIndex++) { |
154 | 169 | TableTDElement tdElement = trElement.createTD(); |
155 | 170 | tdElement.setText(String.format("Cell [{0}, {1}]", rowIndex, colIndex)); |
156 | 171 | } |
157 | 172 | } |
158 | 173 |
|
159 | | -// 向表中添加页脚行 |
| 174 | +// Add a footer row to the table |
160 | 175 | TableTRElement footTrElement = tableTFootElement.createTR(); |
161 | 176 | footTrElement.setAlternativeText("Foot Row"); |
162 | 177 | for (int colIndex = 0; colIndex < colCount; colIndex++) { |
163 | 178 | TableTDElement tdElement = footTrElement.createTD(); |
164 | 179 | tdElement.setText(String.format("Foot %s", colIndex)); |
165 | 180 | } |
166 | 181 | ``` |
| 182 | + |
167 | 183 | ### 保存 PDF 文档 |
168 | | -最后,保存标记的内容以确保其可访问: |
| 184 | +最后,保存文档。保存的文件保留所有标签、语言设置和表格结构,使其完全符合 **create accessible pdf** 的分发要求。 |
| 185 | + |
169 | 186 | ```java |
170 | | -// 保存标记的 PDF 文档 |
| 187 | +// Save the tagged PDF document |
171 | 188 | document.save(outputDir + "/StyleTableRow.pdf"); |
172 | 189 | System.out.println("Document saved successfully."); |
173 | 190 | ``` |
| 191 | + |
174 | 192 | ## 实际应用 |
175 | | -在各种情况下,创建可访问的 PDF 都至关重要: |
176 | | -1. **教育材料**:确保所有学生,包括残疾学生,都能获得学习资源。 |
177 | | -2. **政府刊物**:遵守公共文件的可访问性标准。 |
178 | | -3. **公司报告**:向所有利益相关者提供财务和年度报告。 |
| 193 | +在许多实际场景中,创建可访问的 PDF 至关重要: |
| 194 | + |
| 195 | +1. **教育材料** – 为所有学生提供包容性的教材和讲义。 |
| 196 | +2. **政府出版物** – 符合法律对公共文档的可访问性要求。 |
| 197 | +3. **企业报告** – 确保股东和员工能够使用屏幕阅读器访问财务报表。 |
179 | 198 |
|
180 | 199 | ## 性能考虑 |
181 | | -使用 Aspose.PDF 时: |
182 | | -- 监控内存使用情况,尤其是在处理大型 PDF 时。 |
183 | | -- 通过最小化动态添加的元素数量来优化性能。 |
184 | | -- 遵循 Java 垃圾收集和资源管理的最佳实践。 |
| 200 | +处理大型 PDF 时: |
| 201 | +- 监控内存使用;及时释放资源。 |
| 202 | +- 尽量减少添加的动态元素数量。 |
| 203 | +- 遵循 Java 垃圾回收和对象复用的最佳实践。 |
185 | 204 |
|
186 | | -## 结论 |
187 | | -您已经学习了如何使用 Aspose.PDF for Java 创建带标签的 PDF 文档。这个强大的库使您能够高效地创建无障碍内容,确保数字文档的包容性。您可以尝试不同的配置,根据您的需求定制无障碍功能。 |
| 205 | +## 常见问题及解决方案 |
188 | 206 |
|
189 | | -### 后续步骤 |
190 | | -- 探索 Aspose.PDF 的更多高级功能。 |
191 | | -- 将标记 PDF 生成集成到您现有的应用程序中。 |
192 | | -- 与社区分享您的反馈和见解 [Aspose 的论坛](https://forum。aspose.com/c/pdf/10). |
| 207 | +| 问题 | 解决方案 | |
| 208 | +|-------|----------| |
| 209 | +| PDF 阅读器中未出现标签 | 验证已获取 `taggedContent`,并在添加元素之前调用 `setTitle`/`setLanguage`。 | |
| 210 | +| 表格单元格缺少替代文本 | 在每个 `TableTRElement` 以及标题/页脚行上使用 `setAlternativeText`。 | |
| 211 | +| 大文件导致 OutOfMemoryError | 将文档分段处理或增大 JVM 堆大小(`-Xmx`)。 | |
| 212 | + |
| 213 | +## 常见问题 |
| 214 | + |
| 215 | +**问:我如何验证我的 PDF 真正可访问?** |
| 216 | +**答:** 使用 Adobe Acrobat 的可访问性检查器等工具,或使用屏幕阅读器(NVDA、JAWS)打开文件以确认正确的导航。 |
| 217 | + |
| 218 | +**问:Aspose.PDF 是否支持除英语之外的其他语言?** |
| 219 | +**答:** 支持。通过 `taggedContent.setLanguage("fr-FR")` 设置法语,`es-ES` 设置西班牙语,等等。 |
| 220 | + |
| 221 | +**问:我可以向带标签的 PDF 添加带 alt 文本的图像吗?** |
| 222 | +**答:** 当然。使用 `Image` 类并设置其 `AlternativeText` 属性来描述视觉内容。 |
193 | 223 |
|
194 | | -## 常见问题解答部分 |
195 | | -**问:如何确保我的 PDF 完全可访问?** |
196 | | -答:使用带标签的内容来提供逻辑结构。请使用屏幕阅读器和辅助工具进行测试。 |
| 224 | +**问:在 PDF 表格中生成的行数有限制吗?** |
| 225 | +**答:** 没有硬性限制,但非常大的表格可能会增加内存消耗;请考虑分页或拆分文档。 |
197 | 226 |
|
198 | | -**问:Aspose.PDF 能有效处理大型文档吗?** |
199 | | -答:是的,但始终监视内存使用情况并根据需要优化性能。 |
| 227 | +**问:生成的 PDF 能在所有屏幕阅读器上工作吗?** |
| 228 | +**答:** 当标签、语言和替代文本正确设置时,PDF 符合 PDF/UA 标准,应该可以被大多数主流屏幕阅读器读取。 |
200 | 229 |
|
201 | | -**问:Aspose.PDF 还提供哪些其他功能?** |
202 | | -答:除了创建可访问的 PDF 之外,它还提供转换格式、处理内容和保护文档等多种功能。 |
| 230 | +## 结论 |
| 231 | +您现在拥有一份完整的、一步一步的 **create accessible PDF** 文档指南,涵盖带标签内容、生成样式化表格,并确保与屏幕阅读器兼容。通过使用 Aspose.PDF for Java,您可以将可访问性直接嵌入 PDF 生成流水线,为所有受众提供包容性内容。 |
| 232 | + |
| 233 | +### 后续步骤 |
| 234 | +- 探索更多标签功能,如标题、列表和链接。 |
| 235 | +- 将此工作流集成到现有的 Java 服务或批处理作业中。 |
| 236 | +- 在 [Aspose PDF 论坛](https://forum.aspose.com/c/pdf/10) 分享您的经验并提问。 |
203 | 237 |
|
204 | 238 | {{< /blocks/products/pf/tutorial-page-section >}} |
205 | 239 |
|
206 | 240 | {{< /blocks/products/pf/main-container >}} |
207 | 241 |
|
208 | 242 | {{< /blocks/products/pf/main-wrap-class >}} |
209 | 243 |
|
210 | | -{{< blocks/products/products-backtop-button >}} |
| 244 | +{{< blocks/products/products-backtop-button >}} |
| 245 | + |
| 246 | +--- |
| 247 | + |
| 248 | +**Last Updated:** 2025-12-01 |
| 249 | +**Tested With:** Aspose.PDF for Java 25.3 |
| 250 | +**Author:** Aspose |
0 commit comments