采用jacob实现word转pdf

络上已经有很多这方面的内容,在用之前也是参考了好多别人的文章,下面记录下我自己的整合过程。整个过程都比较简单:

开发环境:win7 64位系统,在2008下面部署也是一样的。
文档要求jdk的版本要1.7的某个版本以上,我用的是:Java version "1.7.0_67"

其他系统和环境可以下载相应的旧版本。
我是从http://sourceforge.net/projects/jacob-project/files/jacob-project/ 这里下载最新的版本jacob-1.18-M2
附上直接下载地址:http://cznic.dl.sourceforge.net/project/jacob-project/jacob-project/1.18-M2/jacob-1.18-M2.zip

代码就写了一个简单的工具类Word2PdfUtil:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. import java.io.File;  
  2. import java.io.IOException;  
  3.   
  4. import com.jacob.activeX.ActiveXComponent;  
  5. import com.jacob.com.Dispatch;  
  6.   
  7. public class Word2PdfUtil {  
  8.   
  9.     static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。  
  10.     static final int wdFormatPDF = 17;// word转PDF 格式  
  11.   
  12.     public static void main(String[] args) throws IOException {  
  13.         String source1 = "e:\\test.doc";  
  14.         String target1 = "e:\\test1.pdf";  
  15.         Word2PdfUtil pdf = new Word2PdfUtil();  
  16.         pdf.word2pdf(source1, target1);  
  17.     }  
  18.   
  19.     public static boolean word2pdf(String source, String target) {  
  20.         System.out.println("Word转PDF开始启动...");  
  21.         long start = System.currentTimeMillis();  
  22.         ActiveXComponent app = null;  
  23.         try {  
  24.             app = new ActiveXComponent("Word.Application");  
  25.             app.setProperty("Visible"false);  
  26.             Dispatch docs = app.getProperty("Documents").toDispatch();  
  27.             System.out.println("打开文档:" + source);  
  28.             Dispatch doc = Dispatch.call(docs, "Open", source, falsetrue).toDispatch();  
  29.             System.out.println("转换文档到PDF:" + target);  
  30.             File tofile = new File(target);  
  31.             if (tofile.exists()) {  
  32.                 tofile.delete();  
  33.             }  
  34.             Dispatch.call(doc, "SaveAs", target, wdFormatPDF);  
  35.             Dispatch.call(doc, "Close"false);  
  36.             long end = System.currentTimeMillis();  
  37.             System.out.println("转换完成,用时:" + (end - start) + "ms");  
  38.             return true;  
  39.         } catch (Exception e) {  
  40.             System.out.println("Word转PDF出错:" + e.getMessage());  
  41.             return false;  
  42.         } finally {  
  43.             if (app != null) {  
  44.                 app.invoke("Quit", wdDoNotSaveChanges);  
  45.             }  
  46.         }  
  47.     }  
  48.   
  49. }  
整个代码只需要一个jacob的jar包就可以运行了。
当然,在下载的文件里面还有个调用系统库的dll文件需要放置在jre的bin目录下:
示例:D:\Java\jdk1.7.0_67\jre\bin\jacob-1.18-M2-x64.dll
这样代码就可以实现word转pdf了。

下面附上maven的pom.xml配置,因为jacob包没在第三方仓库上面直接找到,所以需要手动上传到maven中央库,或者配置下本地路径,下面粘下本地路径的配置:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <dependency>  
  2.             <groupId>com.jacob</groupId>  
  3.             <artifactId>jacob</artifactId>  
  4.             <version>1.18-M2</version>  
  5.             <scope>system</scope>  
  6.             <systemPath>C:/Users/Downloads/jacob-1.18-M2/jacob.jar</systemPath>  
  7.         </dependency>  
这样项目构建的时候就不会出错。
顺便提一句: 在部署的服务器上面需要安装office软件,要不然转换不成功,会报错。

其他一些参数和转换请参考其他两个链接:
http://hu437.iteye.com/blog/844350
http://blog.csdn.net/xuchaozheng/article/details/19199721

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值