使用 Java 编辑 PDF 文件的元数据

文档的元数据以标题、作者、主题、关键字等属性的形式包含有关文档的基本信息。可扩展元数据平台 (XMP) 是一种基于 XML 的标准,用于将文档元数据存储为键/值一对。我们可以通过编程方式添加、编辑或读取 PDF 文档的文档信息和 XMP 元数据。在本文中,我们将学习如何使用 Java 编辑 PDF 属性和元数据。

本文将涵盖以下主题:

用于编辑 PDF 属性和元数据的 Java API

要编辑 PDF 属性和元数据信息,我们将使用 Aspose.PDF for Java API。它允许我们在不使用 Adobe Acrobat 的情况下生成、修改、转换、渲染、保护和打印 支持的文档。请下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。

<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.3</version>
</dependency>

使用 Java 编辑 PDF 属性

我们可以使用表示 PDF 文档元信息的 PdfFileInfo 类来编辑 PDF 文档信息。我们可以按照以下步骤设置各种预定义属性:

  1. 首先,使用 PdfFileInfo 类加载 PDF 文档。
  2. 设置各种属性,例如作者、创建者、关键字、主题、标题等。
  3. 最后,使用 saveNewInfo() 方法保存 PDF 文件,并将输出文件路径作为参数。

以下代码示例展示了如何使用 Java 编辑 PDF 文件的元属性。

// 此代码示例演示了如何设置 PDF 文档的基本信息。
// 开源文档
PdfFileInfo fileInfo = new PdfFileInfo("D:\\Files\\PDF\\sample.pdf");

// 设置PDF信息
fileInfo.setAuthor("Aspose");
fileInfo.setTitle("Editing Metadata");
fileInfo.setKeywords("Aspose.Pdf, DOM, API");
fileInfo.setSubject("PDF Information");
fileInfo.setCreator("Aspose");

// 保存更新的文件
fileInfo.saveNewInfo("D:\\Files\\PDF\\Updated_Info_output.pdf");
用 Java 编辑 PDF 文件的元属性。

用 Java 编辑 PDF 文件的元属性。

使用 Java 读取 PDF 属性

我们可以按照以下步骤阅读PDF文档的基本信息:

  1. 首先,使用 PdfFileInfo 类加载 PDF 文档。
  2. 最后,通过读取元属性的值来显示文档信息。

以下代码示例展示了如何使用 Java 获取 PDF 文件的元属性。

// 此代码示例演示如何获取 PDF 文档的基本信息。
// 打开文档
PdfFileInfo fileInfo = new PdfFileInfo("D:\\Files\\PDF\\Updated_Info_output.pdf");

// 获取 PDF 信息
System.out.println("Subject :" + fileInfo.getSubject());
System.out.println("Title :" + fileInfo.getTitle());
System.out.println("Keywords :" + fileInfo.getKeywords());
System.out.println("Creator :" + fileInfo.getCreator());
System.out.println("Creation Date :" + fileInfo.getCreationDate());
System.out.println("Modification Date :" + fileInfo.getModDate());

// 查找它是否是有效的 PDF 并且它是否也被加密
System.out.println("Is Valid PDF :" + fileInfo.isPdfFile());
// 如果文件被加密,您需要提供文件打开密码
// 作为 PdfFileInfo 构造函数的第二个参数
System.out.println("Is Encrypted :" + fileInfo.isEncrypted());
Subject :PDF Information
Title :Editing Metadata
Keywords :Aspose.Pdf, DOM, API
Creator :Aspose
Creation Date :D:20170612160123-04'00'
Modification Date :D:20220405214422+05'00'
Is Valid PDF :true
Is Encrypted :false

用 Java 获取 PDF 文件的 XMP 元数据

我们可以按照以下步骤读取 PDF 文档的 XMP 元数据:

  1. 首先,使用 Document 类加载 PDF 文档。
  2. 最后,使用 Metadata 类的 getItem() 方法读取元数据并提取信息。

以下代码示例展示了如何使用 Java 获取 PDF 文件的 XMP 元数据。

// 此代码示例演示如何获取 PDF 文档的 XMP 元数据。
// 打开文档
Document pdfDocument = new Document("D:\\Files\\PDF\\SetXMPMetadata.pdf");

// 获取属性
System.out.println("xmp:CreateDate: " + pdfDocument.getMetadata().get_Item("xmp:CreateDate"));
System.out.println("xmp:Nickname: " + pdfDocument.getMetadata().get_Item("xmp:Nickname"));
System.out.println("xmp:CustomProperty: " + pdfDocument.getMetadata().get_Item("xmp:CustomProperty"));
xmp:CreateDate : 2022-04-05T10:05:24.4
xmp:Nickname : Nickname
xmp:CustomProperty : Custom Value

用 Java 在 PDF 文件中设置 XMP 元数据

我们可以按照以下步骤在 PDF 文件中设置 XMP 元数据:

  1. 首先,使用 Document 类加载 PDF 文档。
  2. 接下来,使用 Metadata 类的 setItem() 方法设置元数据值。
  3. 最后,使用 Document.save() 方法保存 PDF 文件,并将输出文件路径作为参数。

以下代码示例展示了如何使用 Java 设置 PDF 文件的 XMP 元数据。

// 此代码示例演示如何设置 PDF 文档的 XMP 元数据。
// 打开文档
Document pdfDocument = new Document("D:\\Files\\PDF\\sample.pdf");

// 设置属性
pdfDocument.getMetadata().set_Item("xmp:CreateDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("xmp:Nickname", new XmpValue("Nickname"));
pdfDocument.getMetadata().set_Item("xmp:CustomProperty", new XmpValue("Custom Value"));

// 保存文档
pdfDocument.save("D:\\Files\\PDF\\SetXMPMetadata.pdf");

在 PDF 文件中自定义 XMP 元数据命名空间

我们可以在 PDF 文件中设置自定义命名空间 URI,而不是定义 XMP 规范。为此,API 在 Metadata 类中提供了 registerNamespaceUri 方法。我们可以按照以下步骤创建一个带有前缀的新元数据命名空间:

  1. 首先,使用 Document 类加载 PDF 文档。
  2. 接下来,使用前缀和命名空间 URI 作为参数调用 registerNamespaceUri() 方法。
  3. 然后,使用 setItem() 方法设置元数据值。
  4. 最后,使用 Document.Save() 方法以输出文件路径作为参数保存 PDF 文件。

以下代码示例展示了如何使用 Java 在 PDF 文件中设置自定义元数据命名空间。

// 此代码示例演示如何设置 PDF 文档的自定义 XMP 元数据。
// 打开文档
Document pdfDocument = new Document("D:\\Files\\PDF\\sample.pdf");

// 设置自定义属性
pdfDocument.getMetadata().registerNamespaceUri("myown", "http:// myown.xyz.com/xap/1.0/");
pdfDocument.getMetadata().set_Item("myown:ModifyDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("myown:CreateDate", new XmpValue(new java.util.Date()));
pdfDocument.getMetadata().set_Item("myown:DeveloperName", new XmpValue("Developer Name"));
pdfDocument.getMetadata().set_Item("myown:MyProperty", new XmpValue("My Custom Value"));

// 保存文档
pdfDocument.save("D:\\Files\\PDF\\CustomizedXMPMetadata.pdf");

我们可以按照前面提到的步骤来读取自定义的 XMP 元数据属性。

NamespaceUri: http:// myown.xyz.com/xap/1.0/
myown:ModifyDate: 2022-04-05T10:18:45.9
myown:CreateDate: 2022-04-05T10:18:45.9
myown:DeveloperName: Developer Name
myown:MyProperty: My Custom Value

获取免费 API 许可证

您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,我们学习了如何:

  • 使用Java添加/编辑PDF文档的基本信息;
  • 使用 Java 设置/获取 PDF 文件中的 XMP 元数据;
  • 使用前缀设置自定义元数据命名空间 URI。

此外,您可以使用 documentation 了解有关 Aspose.PDF for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看