gpt4 book ai didi

java - 如果附加了图像/文本,如何从 MS 项目文件 (.mpp) 中获取任务注释

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:44 32 4
gpt4 key购买 nike

我一直在尝试使用 MPXJ 库获取附加到任务的注释,使用方法

getNotes()

来自类(class)

net.sf.mpxj.Task

但是该方法的返回类型是字符串,您甚至可以插入图像和其他文件作为任务的注释。我的问题是我如何才能检索附加到任务的图像。

enter image description here

此外,如果我在任务中附加纯文本注释,例如。在本例中,注释为“这是任务 200”

enter image description here

它被检索为以下文本

{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang16393{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}} {\*\generator Riched20 15.0.4567}{\*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\f0\fs20 This is Task 200\par }

如果有人能对此提供反馈,我会很高兴。

最佳答案

您的起点是 MPPReader 类。 setPreserveNoteFormatting 方法允许您控制是获取纯文本还是 RTF。您需要检索 RTF 才能提取任何嵌入的对象:

MPPReader reader = new MPPReader();
reader.setPreserveNoteFormatting(true);
ProjectFile file = reader.read("/path/to/my/file.mpp");

MPXJ 中有一个名为 RTFEmbeddedObject 的类,它实现了一种机制,可以提取 MS Project 生成的 RTF 中嵌入的任何对象的原始数据。假设任务 1 附加了一些注释,其中包含嵌入对象。

Task task = file.getTaskByID(1);
String notes = file.getNotes();
List<List<RTFEmbeddedObject>> list = RTFEmbeddedObject.getEmbeddedObjects(notes);

返回的数据是列表的列表...不太好,但它可以工作。第一个列表包含注释中每个嵌入对象的一个​​条目。每个列表条目都由带有几个标志(意义未知)的 block 列表和一个二进制数据 block 组成。

在我到目前为止遇到的示例中,您可以看到成对的 block 。第一个 block 将包含一个文本标签,详细说明后面的数据类型,第二个 block 将包含嵌入对象的原始数据。

通常每个嵌入对象有四个 block ,两个 block 用于保存对象本身的原始数据,两个 block 表示嵌入对象的图元文件预览图像。

使用调试器查看单元测试 MppEmbededTest - 您将能够看到从示例文件中读取的嵌入对象数据。

关于java - 如果附加了图像/文本,如何从 MS 项目文件 (.mpp) 中获取任务注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25423133/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com