欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-31 10:41:37
...

结论:处理文件的页数约多,单页处理效率约高。相比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,不论是大文件还是小文件,都明显要慢很多。