在 Java 中创建标记的 PDF 文件

带标签的 PDF 文件使用标签来定义文档中内容的逻辑结构。这种类型的 PDF 使用辅助技术和屏幕阅读器改善了阅读体验。在 previous post 中,您已经了解了如何在 Java 应用程序中以编程方式创建 PDF 文件。在本文中,您将学习如何在 Java 中以编程方式创建带标签的 PDF 文件。

用于创建标记 PDF 文件的 Java API

要创建带标签的 PDF 文件,我们将使用 Aspose.PDF for Java。它是用于 PDF 生成和操作的流行 API 之一。使用 API,您可以无缝地创建、处理和转换简单和复杂布局的 PDF 文件。您可以 下载 API 或使用以下 Maven 配置安装它。

存储库:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

依赖:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>22.4</version>
</dependency>

在 Java 中创建标记的 PDF 文件

为了在标记的 PDF 中创建结构元素,Aspose.PDF for Java 提供了 ITaggedContent 接口。那么让我们看看如何使用这个接口在Java中创建一个带标签的PDF文件。

以下代码示例展示了如何在 Java 中创建带标签的 PDF。

// 创建一个新文档
Document document = new Document();

// 获取使用标记 PDF 的内容
ITaggedContent taggedContent = document.getTaggedContent();
StructureElement rootElement = taggedContent.getRootElement();
            
// 设置文档的标题和语言
taggedContent.setTitle("Tagged Pdf Document");
taggedContent.setLanguage("en-US");

// 添加标题
HeaderElement mainHeader = taggedContent.createHeaderElement();
mainHeader.setText("Main Header");

// 添加段落
ParagraphElement paragraphElement = taggedContent.createParagraphElement();
paragraphElement.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. " +
"Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet" +
"nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus." +
"Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat" +
"sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper" +
"pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus" +
"ac iaculis eget, tempus et magna. Sed non consectetur elit. Sed vulputate, quam sed lacinia luctus," +
"ipsum nibh fringilla purus, vitae posuere risus odio id massa. Cras sed venenatis lacus.");

rootElement.appendChild(mainHeader);
rootElement.appendChild(paragraphElement);

// 保存标记的 PDF
document.save("tagged-pdf.pdf");

以下是上述代码示例的输出。

在 Java 中创建标记的 PDF 文件

在 Java 中创建带有嵌套元素的标记 PDF

在前面的示例中,我们创建了一个包含段落的简单标记 PDF。现在让我们看看如何在带标签的 PDF 中添加嵌套元素。以下是执行此操作的步骤。

以下代码示例展示了如何在 Java 中在标记的 PDF 中添加嵌套元素。

// 创建一个新文档
Document document = new Document();

// 获取使用标记 PDF 的内容
ITaggedContent taggedContent = document.getTaggedContent();
StructureElement rootElement = taggedContent.getRootElement();
            
// 设置文档的标题和语言
taggedContent.setTitle("Tagged Pdf Document");
taggedContent.setLanguage("en-US");

// 添加标题
HeaderElement mainHeader = taggedContent.createHeaderElement();
mainHeader.setText("Main Header");

// 创建段落
ParagraphElement paragraphWithQuotes = taggedContent.createParagraphElement();
paragraphWithQuotes.getStructureTextState().setFont(FontRepository.findFont("Calibri"));
paragraphWithQuotes.getStructureTextState().setMarginInfo(new MarginInfo(10, 5, 10, 5));

// 添加跨度元素
SpanElement spanElement1 = taggedContent.createSpanElement();
spanElement1.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec lectus ac sem faucibus imperdiet. Sed ut erat ac magna ullamcorper hendrerit. Cras pellentesque libero semper, gravida magna sed, luctus leo. Fusce lectus odio, laoreet nec ullamcorper ut, molestie eu elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam lacinia sit amet elit ac consectetur. Donec cursus condimentum ligula, vitae volutpat sem tristique eget. Nulla in consectetur massa. Vestibulum vitae lobortis ante. Nulla ullamcorper pellentesque justo rhoncus accumsan. Mauris ornare eu odio non lacinia. Aliquam massa leo, rhoncus ac iaculis eget, tempus et magna. Sed non consectetur elit. ");
QuoteElement quoteElement = taggedContent.createQuoteElement();
quoteElement.setText("Sed vulputate, quam sed lacinia luctus, ipsum nibh fringilla purus, vitae posuere risus odio id massa.");
quoteElement.getStructureTextState().setFontStyle(FontStyles.Bold | FontStyles.Italic);
SpanElement spanElement2 = taggedContent.createSpanElement();
spanElement2.setText(" Sed non consectetur elit.");

// 追加到段落
paragraphWithQuotes.appendChild(spanElement1);
paragraphWithQuotes.appendChild(quoteElement);
paragraphWithQuotes.appendChild(spanElement2);

rootElement.appendChild(mainHeader);
rootElement.appendChild(paragraphWithQuotes);

// 保存标记的 PDF
document.save("tagged-pdf.pdf");

以下屏幕截图显示了带有嵌套元素的标记 PDF。

在 Java 中创建带有嵌套元素的标记 PDF

在标记的 PDF 中设置文本结构的样式

您还可以通过设置字体样式、系列、大小等将样式应用于标记 PDF 中的文本。为此,Aspose.PDF for Java 允许您使用 [StructureTextState] 设置字体、字体大小、字体样式和前景色22 类。以下代码示例展示了如何在 Java 中应用标记 PDF 中的文本样式。

// 创建一个新文档
Document document = new Document();

// 获取使用标记 PDF 的内容
ITaggedContent taggedContent = document.getTaggedContent();
StructureElement rootElement = taggedContent.getRootElement();
            
// 设置文档的标题和语言
taggedContent.setTitle("Tagged Pdf Document");
taggedContent.setLanguage("en-US");

// 添加标题
HeaderElement mainHeader = taggedContent.createHeaderElement();
mainHeader.setText("Main Header");

// 创建段落
ParagraphElement paragraphWithQuotes = taggedContent.createParagraphElement();
taggedContent.getRootElement().appendChild(paragraphWithQuotes);

// 设置样式
paragraphWithQuotes.getStructureTextState().setFontSize(18F);
paragraphWithQuotes.getStructureTextState().setForegroundColor(Color.getRed());
paragraphWithQuotes.getStructureTextState().setFontStyle(FontStyles.Italic);
            
// 添加文字
paragraphWithQuotes.setText("Red italic text.");

// 保存标记的 PDF
document.save("tagged-pdf.pdf");

用 Java 说明标记 PDF 中的结构元素

为了说明结构元素,Aspose.PDF for Java 提供了 IllustrationElement 类。以下代码示例展示了如何使用此类来说明带标签的 PDF 中的结构元素。

// 创建一个新文档
Document document = new Document();

// 获取使用标记 PDF 的内容
ITaggedContent taggedContent = document.getTaggedContent();
StructureElement rootElement = taggedContent.getRootElement();
            
// 设置文档的标题和语言
taggedContent.setTitle("Tagged Pdf Document");
taggedContent.setLanguage("en-US");

// 创建插图元素
IllustrationElement figure1 = taggedContent.createFigureElement();
taggedContent.getRootElement().appendChild(figure1);
figure1.setAlternativeText( "Figure One");
figure1.setTitle("Image 1");
figure1.setTag("Fig1");
figure1.setImage("aspose_pdf.png");

// 保存标记的 PDF
document.save("tagged-pdf.pdf");

获得免费许可证

您可以获得一个免费的临时许可证 以便在没有评估限制的情况下使用 Aspose.PDF for Java。

结论

在本文中,您学习了如何在 Java 中创建带标签的 PDF 文件。此外,您还了解了如何以编程方式创建嵌套元素、对文本应用样式以及说明带标签的 PDF 中的结构元素。此外,您可以使用 文档 探索有关 Java PDF API 的更多信息。如果您有任何问题或疑问,可以通过我们的 论坛 与我们联系。

也可以看看