TXT转换PDF方法1:利用WPS转换的效率及适应性研究(JAVA环境) 博客分类: 文档处理 文档格式转换javaWPSTXTPDF
结论:处理的文件越大,单页输出效率越高,4页文件的平均效率:151ms/page,1311页文件的平均效率:38.3ms/page。处理效率和文字编码无明显关联。(查看word测试结果)
0.运行环境
需要运行在windows环境下,原因当下wps的linux版本还处在beta阶段,所以不推荐使用。笔者所使用的wps为2012个人版。“wps文字”版本号:8.1.0.3526
1.需要的辅助工具:
由于java环境无法直接调用ActiveX,所以借助于开源的jacob。版本: 1.17
2.代码准备:
这里只列举几个关键步骤吧,完整代码就不列举了,可以自行组合。
2.1 创建WPS文字的ActiveX对象
ActiveXComponent app = new ActiveXComponent("WPS.Application"); //后台转换,隐藏界面 app.setProperty("Visible", false);
2.2 打开txt文档
//获取到所有文档对象 Dispatch documents=app.getProperty("Documents").toDispatch(); //open 有15个参数,第一个是打开文档文件名,最后一个控制是否【不显示】编码选择对话框 Object[] attr=new Object[15]; attr[0]=in; attr[14]=true; Dispatch doc = Dispatch.call(documents, "open",attr).toDispatch();
2.3 输出为pdf文档
Dispatch.call(doc, "ExportPdf",out);
2.4 关闭文档
Dispatch.call(doc, "Close", 0);
2.5 关闭WPS文字的ActiveX对象
Dispatch.call(documents, "Close", 0); documents.safeRelease(); Dispatch.call(app, "Quit", 0); app.safeRelease();
3. 转换效率
场景1:txt文件大小:5.02k,GBK编码。生成pdf后109k,4页。处理1024个文件,用时:618026毫秒,10分钟。平均每个文件用时:603.5ms。
场景2:txt文件大小:6.04k,UTF-8编码。生成pdf后依然是109k,4页。处理1024个文件,用时:617839毫秒,10分钟。平均每个文件用时:603.4ms。和场景1的结果无明显差别。
场景3:txt文件大小:2.42m,GBK编码。生成pdf后4.56m,1311页。处理16个文件,用时:803473毫秒,13分钟。平均每个文件用时:50217ms。
从以上结果分析出,处理的文件越大,单页输出效率越高,4页文件的平均效率:151ms/page,1311页文件的平均效率:38.3ms/page。处理效率和文字编码无明显关联。
4. 适应性分析:
4.1 文件占用
由于采用了只读方式打开txt文件,所以不受文件是否被其他程序打开的影响。
4.2 文字编码
文字编码由WPS来判断,可以根据文字内容来判断编码。