更改元数据中图表创建时间 - 使用 GroupDocs Java

在本分步教程中,您将了解如何使用 GroupDocs.Metadata Java 库更改图表创建时间并更新图表文件的其他内置属性。自动化这些更改可节省数小时的手动编辑,确保整个仓库的时间戳一致,并使您的图表在任何文档管理系统中即时可搜索。

快速答案

  • 主要目标是什么? 更改图表文件的创建时间和其他元数据。
  • 应该使用哪个库? GroupDocs.Metadata for Java。
  • 我需要许可证吗? 免费试用足以进行测试;生产环境需要完整许可证。
  • 我可以批量处理多个图表吗? 可以——将相同逻辑包装在循环或并行流中。
  • 需要哪个 Java 版本? JDK 8 或更高。

什么是图表元数据中的“更改图表创建时间”?

更改创建时间会用新的日期时间值覆盖存储在图表文件(如 VDX 或 VSDX)中的原始时间戳。这使您能够将文件的元数据与实际的处理或归档日期对齐,而不是作者的原始时间戳,这对于审计追踪和准确的搜索结果至关重要。

为什么要自动化图表的元数据更新?

自动化元数据可确保每个图表遵循相同的命名、分类和时间戳标准,避免人为错误。它还能加快批量迁移,降低合规风险,并提升企业 DMS 平台的可发现性——在大规模项目中可节省高达 70 % 的人工工作量。

前置条件

  • Java Development Kit (JDK) 8+ 已在您的机器上安装。
  • IDE 如 IntelliJ IDEA 或 Eclipse。
  • Maven(或手动 JAR 管理)用于依赖管理。
  • 对 Java 类、方法和异常处理有基本了解。

必需的库和依赖

如果使用 Maven,请将以下仓库和依赖添加到您的 pom.xml 文件中:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/metadata/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-metadata</artifactId>
      <version>24.12</version>
   </dependency>
</dependencies>

如果您更喜欢直接下载,请访问 GroupDocs.Metadata for Java releases 获取最新版本。

环境设置

  • JDK 8 或更高。
  • IntelliJ IDEA、Eclipse 或任何兼容 Java 的 IDE。

知识前提

了解 Java 语法和基本文件 I/O 将使教程更顺畅,但步骤已用通俗语言解释。

为 Java 设置 GroupDocs.Metadata

安装说明

Maven 用户: 上面的代码片段会自动添加仓库并获取所需的 JAR。
直接下载用户: 从 GroupDocs 下载 JAR 后,将其添加到项目的类路径中。

许可证获取

  • 免费试用: 免费体验该库。
  • 临时许可证: 获取用于延长测试的临时许可证此处。
  • 购买: 为生产环境获取完整许可证。

基本初始化

Metadata 是表示文档元数据容器的核心类,提供对所有内置属性的读写访问。要开始使用 GroupDocs.Metadata,请导入该类并打开图表文件:

import com.groupdocs.metadata.Metadata;

// Load a diagram document and access its metadata
try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/InputVdx")) {
    // Your code here
}

实施指南

如何更改图表文件的创建时间

在本节中,我们将逐步演示如何更改图表创建时间并更新其他常用属性,如作者、公司和类别。该过程包括使用 Metadata API 加载图表,访问其根包,设置所需字段,最后将更改保存到新文件,确保原文件保持不变。

步骤 1:加载图表文档

try (Metadata metadata = new Metadata("YOUR_DOCUMENT_DIRECTORY/InputVdx")) {
    // Access and update document properties here
}

说明: Metadata 构造函数接收图表文件的路径。try‑with‑resources 块确保操作完成后文件被正确关闭。

步骤 2:访问根包

DiagramRootPackage root = metadata.getRootPackageGeneric();

说明: 根包让您直接访问图表的所有内置元数据字段。

步骤 3:设置创建者属性

root.getDocumentProperties().setCreator("test author");

说明: 分配新的作者名称。将 "test author" 替换为实际的创建者。

步骤 4:更改创建时间

root.getDocumentProperties().setTimeCreated(new Date());

说明: 此行更改创建时间为当前系统日期和时间。如果需要自定义时间戳,也可以提供特定的 Date 实例。

步骤 5:定义公司信息

root.getDocumentProperties().setCompany("GroupDocs");

说明: 保存与图表关联的公司名称——对企业跟踪很有用。

步骤 6:设置文档类别

root.getDocumentProperties().setCategory("test category");

说明: 对文件进行分类,帮助您在整个仓库中一致地更新图表类别。

步骤 7:添加关键字

root.getDocumentProperties().setKeywords("metadata, built-in, update");

说明: 关键字提升可搜索性;您可以列出任何与图表内容相关的词汇。

步骤 8:保存更改

metadata.save("YOUR_OUTPUT_DIRECTORY/OutputVdx");

说明: 将所有修改持久化到新文件,原文件保持不变。

常见问题与故障排除

  • 文件未找到: 检查输入路径并确保文件扩展名与实际格式匹配。
  • 访问被拒绝: 检查输入和输出目录的读写权限。
  • 无效的日期格式: 使用与 API 兼容的 java.util.Date 或 java.time 对象。

实际应用

  1. 自动化文档归档 – 将旧图表移动到归档时,自动更改图表创建时间为归档日期并设置统一的类别。
  2. 版本控制集成 – 在每次发布时更新创建时间,使时间戳与 Git 提交保持同步。
  3. 企业 DMS 标准化 – 在所有图表资产中强制执行公司范围的作者、公司和关键字政策。

性能考虑

  • 批量处理: 将上述步骤包装在循环中,一次运行处理数十个文件。
  • 内存管理: 及时释放每个 Metadata 实例(try‑with‑resources 块会自动完成)。
  • 异步执行: 对于大批量处理,考虑使用 CompletableFuture 并行运行更新,避免阻塞主线程。
  • 量化能力: GroupDocs.Metadata 支持超过 30 种图表格式,且可在不将整个文档加载到内存的情况下处理高达 500 MB 的文件,在典型服务器硬件上每个文件的更新耗时低于 200 ms。

结论

您现在了解如何使用 Java 中的 GroupDocs.Metadata 更改图表创建时间并更新图表文档的其他内置元数据属性。通过自动化这些步骤,您可以在组织内保持一致、可搜索且合规的文档。

下一步

  • 尝试使用 GroupDocs.Metadata 支持的其他文件格式(PDF、DOCX 等)。
  • 将代码集成到 CI/CD 流水线,以在每次构建时强制执行元数据标准。

准备好尝试了吗?前往 GroupDocs.Metadata for Java releases 并立即开始实现您自己的元数据自动化。


最后更新: 2026-06-17
测试版本: GroupDocs.Metadata 24.12
作者: GroupDocs

常见问题解答

问:我可以将此方法用于其他图表格式,如 VSDX 吗?
答:可以,相同的 API 适用于 GroupDocs.Metadata 支持的所有图表格式。

问:开发构建是否需要许可证?
答:免费试用足以用于开发和测试;生产部署需要完整许可证。

问:如何在一次调用中更新多个属性?
答:在调用 metadata.save(...) 之前,在 DocumentProperties 对象上设置每个属性;库会一次性写入所有属性。

问:覆盖原始文件安全吗?
答:建议先保存为新文件(如示例所示),确认更新成功后再替换原文件。

问:如果需要设置自定义创建日期而不是当前时间怎么办?
答:创建带有所需时间戳的 java.util.Date(或 java.time 实例),并将其传递给 setTimeCreated。

相关教程