0

环境:windows7上的word2007。

我使用最新的Apache POI库(3.16)解析了一个word(.docx)文件,并成功地精确了文本、图片和嵌入的mathtype方程。

为了解析嵌入的数学类型方程,我使用了以下 api

List<XWPFPictureData> allPictures = doc.getAllPictures();
int i = 0;
for (XWPFPictureData picture: allPictures) {
    if (picture.getFileName().endsWith(".wmf")) {
        FileUtils.writeByteArrayToFile(new File(i + ".wmf"), 
        picture.getData());
        i++;
    }
}

现在我想创建一个新的 word(docx) 文件,将文本、图片和嵌入的 mathtype 方程添加回它。

添加文字:XWPFRun run = para.createRun(); run.setText("xxx").

添加图片:XWPFPicture xwpfPicture = run.addPicture(pictureData, pictureType, filename, Units.pixelToEMU(width), Units.pixelToEMU(height));

添加 wmf: String rId = doc.addPictureData(new FileInputStream(wmfFilePath), Document.PICTURE_TYPE_WMF);

问题是 wmf 现在是不可见的,如何让它可见并放置在正确的位置?或者说使 wmf 与创建的运行相关。

看了poi的例子和测试用例,还是找不到任何api或方法。 http://svn.apache.org/repos/asf/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/ http://svn.apache.org/repos/asf/poi/trunk/ src/examples/src/org/apache/poi/xwpf/usermodel/examples/

有一个相关的问题: 如何使用 Apache POI 将嵌入式方程添加到 docx 文件?

不同之处在于我只想将解析后的 wmf 文件添加到新的 word 文件中,而不是以编程方式编写一些 mathtype 方程。

有人可以帮忙吗?


eg:我有一个词,它有一个数学类型方程,当双击它时,由于机器上安装了数学类型软件,所以数学类型编辑器是打开的。

使用 POI api 解析它:

doc.getAllPictures(); FileUtils.writeByteArrayToFile(new File(i + ".wmf"), picture.getData());

现在 mathtype 方程被转换为磁盘上的 wmf 文件。

run.addPicture(pictureData, Document.PICTURE_TYPE_WMF, filename, Units.pixelToEMU(width), Units.pixelToEMU(height)) 它可以将 wmf 添加为图片,但我想恢复单词,当用户双击单词时方程,数学类型编辑器打开。

POI 可以将 word 中的 mathtype 方程解析为 wmf 文件,有什么办法可以将 word 写回原样?

4

0 回答 0