络上已经有很多这方面的内容,在用之前也是参考了好多别人的文章,下面记录下我自己的整合过程。整个过程都比较简单:
开发环境: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:
import java.io.File; import java.io.IOException; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; public class Word2PdfUtil { static final int wdDoNotSaveChanges = 0 ; static final int wdFormatPDF = 17 ; public static void main(String[] args) throws IOException { String source1 = "e:\\test.doc" ; String target1 = "e:\\test1.pdf" ; Word2PdfUtil pdf = new Word2PdfUtil(); pdf.word2pdf(source1, target1); } public static boolean word2pdf(String source, String target) { System.out.println("Word转PDF开始启动..." ); long start = System.currentTimeMillis(); ActiveXComponent app = null ; try { app = new ActiveXComponent( "Word.Application" ); app.setProperty("Visible" , false ); Dispatch docs = app.getProperty("Documents" ).toDispatch(); System.out.println("打开文档:" + source); Dispatch doc = Dispatch.call(docs, "Open" , source, false , true ).toDispatch(); System.out.println("转换文档到PDF:" + target); File tofile = new File(target); if (tofile.exists()) { tofile.delete(); } Dispatch.call(doc, "SaveAs" , target, wdFormatPDF); Dispatch.call(doc, "Close" , false ); long end = System.currentTimeMillis(); System.out.println("转换完成,用时:" + (end - start) + "ms" ); return true ; } catch (Exception e) { System.out.println("Word转PDF出错:" + e.getMessage()); return false ; } finally { if (app != null ) { app.invoke("Quit" , wdDoNotSaveChanges); } } } }
整个代码只需要一个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中央库,或者配置下本地路径,下面粘下本地路径的配置:
< dependency > < groupId > com.jacob </ groupId > < artifactId > jacob </ artifactId > < version > 1.18-M2 </ version > < scope > system </ scope > < systemPath > C:/Users/Downloads/jacob-1.18-M2/jacob.jar </ systemPath > </ dependency >
这样项目构建的时候就不会出错。
顺便提一句:
在部署的服务器上面需要安装office软件,要不然转换不成功,会报错。
其他一些参数和转换请参考其他两个链接: http://hu437.iteye.com/blog/844350 http://blog.csdn.net/xuchaozheng/article/details/19199721