繁体   English   中英

如果图像/文本附加到它,如何从MS Project文件(.mpp)中获取任务说明

[英]How to Fetch Task Notes from MS Project File (.mpp) if an Image/text is Attached to it

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

getNotes()

从班上

net.sf.mpxj.Task

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

在此处输入图片说明

另外,如果我在任务上附加纯文本注释,例如。 在这种情况下,注释为“这是任务200”

在此处输入图片说明

它被检索为以下文本

{\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分发的类,称为RTFEmbeddedObjectRTFEmbeddedObject实现了一种机制,可为MS Project生成的RTF中嵌入的任何对象提取原始数据。 假设我们有一些附加到任务1的注释,其中包含嵌入式对象。

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

返回的数据是一个列表列表,虽然不是很好,但是可以工作。 第一个列表在注释中每个嵌入式对象包含一个条目。 每个列表条目均由带有几个标志(含义不明)的块列表和一个二进制数据块组成。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM