docx 转 doc

原创
2016/10/28 17:33
阅读数 1.4K

1、docx4j 官方文档截图,如何处理 doc docx

2、LibreOffice(部分数学公式无法转换,转换过来是乱码,而且转换之前还必须把Word的数学公式设为 Cambria Math)

 

3、FMath , 一个将 LaTeX 转为 mathml 的Java框架

 

 

寻找 docx 转 doc 的过程

关于转换我已经试过很多方法了,下面是我的经历,首先就是我发我的Word2007打开有数学公式 的Word会出现部分乱码,需要手动把他们全部转为 Cambria Math 字体,才会正常显示,可是别人的 Word 2007 并没有这个问题,我怀疑是不是我的 Word2007 是破解版的。

1)未设置字体时

2)设置了 Cambria Math 字体

 

因为是字体没有设置 为 Cambria Math,所以我就想在数学公式生成Word的时候设置字体,参考这篇文章:http://stackoverflow.com/questions/16784914/how-generate-docx-odt-file-with-math-formulas-from-java

可是,我就算这样设置了,结果也不尽然。

然后,我就把这个撂倒一边,去看了 docx4j 的官方文档,它说如果想要从 docx to doc ,那么需要使用 openOffice/jodconvert ,此时我非常兴奋,因为有大神在前面指路。

首先我下载的是 JODConvert ,URL:http://www.artofsolving.com/opensource/jodconverter.html

其API使用也是非常简单,不过他要依赖 OpenOffice 或 LibreOffice,网上说 LibreOffice 功能上已经渐渐超过 OpenOffice 了,当然,我并不知道,我两个都下载了。

首先下载的是 LibreOffice:http://www.libreoffice.org/

然后又下载了 OpenOffice:http://www.openoffice.org/

因为我使用的使用Windows,于是也都安装了客户端程序,接下来就是使用 JODConver 和以上两个组件开始对接转文件了,代码如下:

以上三个方法,只使用了 transformBinaryWordDocXToDoc,因为我的目的就是转换 docx 到 doc.另外,注意一下参数。DocumentFamily.PRESENTATION,如果是Text,数学公式无法转换过来。

然后看看如何调用 OpenOffice 或 LibreOffice

通过切换代码来分别调用不同的组件,测试了,两个都有效果,但是效果都不理想,我不知道是不是我的数学公式有问题,还是这个组件自身的bug,有些数学公式就是转换不出来,如下

1)正常的数学公式(OMML)

2)LibreOffice 转换过来的公式,因为2003只是图片

3)OpenOffice 转换过来的公式,同样也是图片

结果很明显,LibreOffice 可以转换数学公式,但是不是所有公式都能正常转换,OpenOffice 则公式都没有转换出来。总之,想通过docx 转 doc 这种方式我觉得只要有数学公式那么就是行不通的,但是我又在怀疑是不是我的数学公式生成有问题,于是我找了各个版本的 MML2OMML.XSL , 进行数学公式转换,可是结果也一样,所以最后我决定还是生成 doc 吧,转来转去实在太累了。

 

如何生成 doc 呢?因为后台只有LaTeX,这个LaTeX如何才能转为Word中的数学公式呢?因为只有 2007以上版本才支持数学公式,2003 只能是图片,所以我得找个框架在后台把 LaTeX 转为 图片,于是网上看到了 FMath:http://www.fmath.info/java/latex-mathml-converter/

看看他的转换代码:

还可以参考: http://note.youdao.com/share/?id=8c207c69907332f436ade0ddedfadf4a&type=note#/

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部