TXT转换PDF方法2:利用Word转换的效率及适应性研究(JAVA环境)

结论:处理文件的页数约多,单页处理效率约高。相比wps,不论是大文件还是小文件,都明显要慢很多。处理文字编码为UTF-8的文件时速度较快。(查看WPS测试结果

0. 运行环境

既然是利用Microsoft Office word,所以理所当然需要运行在Windows下。测试用的Office版本:2010。

1.需要的辅助工具:

由于java环境无法直接调用ActiveX,所以借助于开源的jacob。版本: 1.17。

2.代码准备:

这里只列举几个关键步骤吧,完整代码就不列举了,可以自行组合。

2.1 创建Word的ActiveX对象

ActiveXComponent app = new ActiveXComponent("Word.Application");
app.setProperty("Visible", false);

2.2 打开txt文档

Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch  doc = Dispatch.call(docs,
                    "Open",
                    in, // FileName
                    false, // ConfirmConversions
                    true // ReadOnly
                    ).toDispatch();

2.3 输出为PDF文档

Dispatch.call(doc,
                    "SaveAs",
                    out, // FileName
                    17);

2.4 关闭文档

Dispatch.call(doc, "Close", false);
doc.safeRelease();

2.5 关闭ActiveX

if (docs != null) {
    docs.safeRelease();
}
if (app != null) {
   app.invoke("Quit", 0);
   app.safeRelease();
}

3. 转换效率

场景1:txt文件大小:5.02k,GBK编码。生成pdf后123k~124k,4页。生成的文件不都是相同大小,这个问题还有待研究。处理1024个文件,用时:898889ms,14分58秒。平均每个文件用时:877.8ms。比WPS文字603.5ms慢了45%。

场景2:txt文件大小:6.04k,UTF-8编码。生成pdf是122k,4页。pdf文件还是大小不一。处理1024个文件,用时:876222ms,14分36秒。平均每个文件用时:855.7ms。时间略低于场景1。原因有可能是word需要把GBK编码的文件转换成UTF-8编码后才能再执行操作,这一点有待证实。

场景3:txt文件大小:2.42m,GBK编码。生成pdf后13.4m,1430页。处理2个文件,用时:464491ms,7分44秒。平均每个文件用时:232245.5ms。比WPS文字慢3.6倍。

分析结果得出:处理文件的页数约多,单页处理效率约高。相比wps,不论是大文件还是小文件,都明显要慢很多。

猜你喜欢

转载自doingwell.iteye.com/blog/1808085