OFFICE文档转换到PDF的几种方法与转换效率和性能的简单比较

      前段时间做一个项目中用到了文件转换,可惜效率不是怎么高。

 

      本人才疏学浅,写不来好文章,只能做一点简单的笔录(哭~~~~,“我这人可笨可笨了。”)。

 

      本文不写代码,实在不好意思贴出来,不仅是我,相信国内没有这样的牛能写出高水平的打印程序来【我同你一样,期待牛的出现】。看看街上卖的高低端打印机牌子就知道了,几乎清一色日产,就算国产的,芯片技术还是很落后的,国产化的路还是任重道远啊,所以实在不好意思,我不是牛,只能google,悲哀呼?

 

      最近又将该文档转换进行了简单优化,是要将一般性文档(以office文档为例)最终转为pdf文档。其中是非曲折很难想想。现将本人实际使用过程中用到的几种转换方法介绍如下:

 

      一、直接用OFFICE的另存功能

 

      OFFICE工具发展到现在,无论是MS OFFICE、Open Office、WPS OFFICE目前都提供了保存为PDF格式的方法。这些方法都经过了文档打开,校验文档,转换文档的过程。

 

      1.C#+MS OFFICE另存方式

 

      这一种方式是用目前最新的OFFICE2007,需要安装插件包SaveAsPDFandXPS.exe的,

语句我就不写了,随便转载一下,帮人打打广告也好,别怨我哦(嘿嘿)。

http://www.kuqin.com/office/20080504/7814.html


      2.JAVA+MS OFFICE另存的方式肯定也可以实现的,可以利用以下jacob,jni关键词哟。

 

      3.JAVA+OpenOffice方式也行的

 

      二、间接转换(通过打印方式)

 

      这是本文的重点,也许很多人认为直接转换效率肯定会很高,其实未必,经过我测试的1万页word(*.doc)纯文本文档,第一种方式需要很久很久的。至少要30分钟吧,JAVA+OpenOffice居然达到2小时之久,当然还是要以实测数据为准,另外强烈批评一下OpenOffice,就算直接打开转换一个PPT文档中居然出现了一部分乱码,该乱码是跟文本有关的,而不是字体关系。其他方式都正常。     

 

      目前打印虚拟机有很多种类的,不信你可以测试并比较一下这些虚拟打印机的性能。

至于生成文档大小当然跟设置有关,有些没有设置压缩的选项的虚拟机直接就可以过滤掉,不能进行二次开发的也过滤掉,目前我经过筛选用到的虚拟打印机效率比较高的是cutepdf(收费),pdffactory(及FinePrint收费)、smartprinter(收费)、flashpaper(收费),最后来个免费的PDFCreator吧。  

    

      简单比较了一下,不能到底确定哪个好,因为这个需要大量的文档进行测试的。

 

      cutepdf效率挺高的,那个1万页用了4分多钟,而有名气的pdffactory和smartprinter很消耗时间,难道跟用破解有关?flashpaper和pdfCreator时间差不多,顺便说一下,flashpaper不仅收费,而且所支持的打印为swf文件由于目前是承载在AVM1虚拟机上的,当时造成了转换后的flash文档打不开。

PDFCreator还有附带源码在安装目录下的。

 

      既然如此,还等什么呢?为什么不用免费的呢?当然要用了,直接更改来用是可以的。

PDFCreator要用好得控制好输出和线程,因为它是VB整合POSTSCRIPT+GHOSTSCRIPT的。由于别人开发了,何必再做一次呢,相信打印到ps文件那一步不能再优化到多少了。

      注意哟,这个PDFCreator必须使用单线程方式排队打印,反应快了,肯定会在队列中等待很多文件的,而且这些文件一旦重启打印,很多都不能得到正常的结果的。所以必须控制一次打印一个,哪怕是多线程也得加个锁吧。

 

      我是新同学,臆测一下,打印的速度比直接转换的快,很有可能是技术上更成熟,能打印出来的文档基本上都是可以打印成ps的,这个ps文档的标准虽然占用很大的临时空间,但从效率上来说确实很高的,无论是打印还是直接保存都需要将文档打开,文档一旦很大,就要消耗过多的CPU时间,这也是造成文档转换效率不高的原因。    

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值