在非常多企业级应用中都涉及到将office图片转换成pdf进行保存或者公布的场景,由于pdf格式的文档方便进行加密和权限控制(类似于百度文库)。总结起来眼下将office文件转换

成pdf的方法主要有两种:

 1、利用jcob调用ms office的com组件,将office文档转换成pdf。

2、利用jcob调用acrobat将office文档转换成pdf。

在实际使用中发现。因为office不同所以本的文件格式不一致,所以不论什么第三方的转化工具都不可能完美的兼容全部office版本号,最好的方案就是调用ms office提供的com组件来进

行转换。就算office高版本号出现。我们要做的也仅仅是升级我们的office版本号而已。

首先,利用office的com组件进行文档转换首先须要到jacob官网下载一个jacob.jar和jacob.dll,jacob.dll须要放到windows的system32以下。jacob.jar引用到javaproject中。

其次,编写代码。初始化word进程,并返回word的全部document对象:

         //打开word应用程序

         ActiveXComponent app = new ActiveXComponent("Word.Application");

         //设置word不可见,否则会弹出word界面

         app.setProperty("Visible", false);        

  //获得word中全部打开的文档,返回Documents对象

         Dispatch docs = app.getProperty("Documents").toDispatch();

第三步。打开我们要转换的word文档:

  //调用Documents对象中Open方法打开文档。并返回打开的文档对象Document

         Dispatch doc = Dispatch.call(docs,

                                     "Open",

                                     "xxx.doc",

                                     false,

                                     true

                                     ).toDispatch();

 

 最后,另存我们刚才打开的文档。并关闭word进程:

  //调用Document对象的SaveAs方法,将文档保存为pdf格式

         Dispatch.call(doc,

                 "ExportAsFixedFormat",

                 "xxx.pdf",

                 wdFormatPDF        //word保存为pdf格式

                 );         //关闭文档

         Dispatch.call(doc, "Close",false);

         //关闭word应用程序

         app.invoke("Quit", 0);

附录:完整代码

public static void word2PDF(String inputFile,String pdfFile){

         //打开word应用程序

         ActiveXComponent app = new ActiveXComponent("Word.Application");

         //设置word不可见。否则会弹出word界面

         app.setProperty("Visible", false);

         //获得word中全部打开的文档,返回Documents对象

         Dispatch docs = app.getProperty("Documents").toDispatch();

         //调用Documents对象中Open方法打开文档。并返回打开的文档对象Document

         Dispatch doc = Dispatch.call(docs,

                                     "Open",

                                     inputFile,

                                     false,

                                     true

                                     ).toDispatch();

         //调用Document对象的SaveAs方法。将文档保存为pdf格式

         Dispatch.call(doc,

                 "ExportAsFixedFormat",

                 pdfFile,

                 wdFormatPDF        //word保存为pdf格式

                 );

         //关闭文档

         Dispatch.call(doc, "Close",false);

         //关闭word应用程序

         app.invoke("Quit", 0);

     }

java调用com组件将office文件转换成pdf的更多相关文章

  1. dvi文件和将dvi文件转换成pdf格式

    dvi文件和将dvi文件转换成pdf格式 Latex只能把tex文件编译成dvi文件, 在cmd 中: 使用xdvi查看dvi格式的文件 若用texstudio编辑tex文件,则可直接将已编译成功的. ...

  2. 关于DWG文件转换成PDF

    最近有这样一个需求,客户会提供DWG文件,因为DWG文件是不能直接在网页上显示的,所以必须对他做处理,要求是转换成PDF格式.我查了很久的资料,很多都是基于C#和.NET的方法,而且都是说的很模糊,不 ...

  3. 在Linux下将HTML文件转换成PDF文件

    今天要写一个上交的作业,本来是想用Office Word来写的,但是,我的Office貌似不能用了,但是,Linux下的LibreOffice写出的文档,在打印的时候是经常出现乱码的.所以,后来想到可 ...

  4. C# 将PowerPoint文件转换成PDF文件

    PowerPoint的优势在于对演示文档的操作上,而用PPT查看资料,反而会很麻烦.这时候,把PPT转换成PDF格式保存,再浏览,不失为一个好办法.在日常编程中和开发软件时,我们也有这样的需要.本文旨 ...

  5. html文件转换成pdf和word

    1.html文件转成pdf 采用jar包有itext-asian.jar.itextpdf-5.5.5.jar.itext-pdfa-5.5.5.jar.itext-xtra-5.5.5.jar,为了 ...

  6. ofd格式文件转换成pdf格式的方法

    ofd格式文件很多人还比较陌生,很多人接收到文件都不知如何打开阅读,把文件发给对方,还需要对方安装个专门的阅读软件,我们还有另一个办法,就是将OFD文件转换为PDF格式文件,然后把PDF格式文件发给对 ...

  7. Java利用aspose-words将word文档转换成pdf(破解 无水印)

    首先下载aspose-words-15.8.0-jdk16.jar包 http://pan.baidu.com/s/1nvbJwnv 引入jar包,编写Java代码 package doc; impo ...

  8. Java实现批量将word文档转换成PDF

    先导入words的jar包 需要jar包的私聊我发你 代码如下:import com.aspose.words.Document;import java.io.File; public class W ...

  9. python3将docx转换成pdf,html文件,pdf转doc文件

    直接上代码 # -*- encoding:utf-8 -*- """ author:lgh 简单的doc转pdf,html,pdf转doc脚本 依赖库pdfminer3k ...

随机推荐

  1. BZOJ2225: [Spoj 2371]Another Longest Increasing CDQ分治,3维LIS

    Code: #include <cstdio> #include <algorithm> #include <cstring> #define maxn 20000 ...

  2. 浅谈htmlentities 、htmlspecialchars、addslashes的使用方法

    html_entity_decode():把html实体转换为字符. $str = "just atest & 'learn to use '"; echo html_en ...

  3. rem — 一个低调的css单位

    原文  http://www.zhaoan.org/1825.html rem这是个低调的 css 单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃 ...

  4. [USACO17DEC]Milk Measurement(平衡树)

    题意 最初,农夫约翰的每头奶牛每天生产G加仑的牛奶 (1≤G≤109)(1≤G≤10^9)(1≤G≤109) .由于随着时间的推移,奶牛的产奶量可能会发生变化,农夫约翰决定定期对奶牛的产奶量进行测量, ...

  5. python set元素访问

    python中集合set主要利用其唯一性,及并集|.交集&等操作,但不可以直接通过下标进行访问,必须访问时可以将其转换成list再访问 x={1,2,5} y=list(x) a=y[1] a ...

  6. [PYTHON]一个简单的单元測试框架

    近期尝试了一下TDD(測试驱动)的模式.感觉效果不错.在此总结一下,同学们假设有更好的办法,一定要告诉我:) 1. 每一个功能模块(文件),配一个单元測试模块. 以手头这个项目为样例:有LogCat. ...

  7. orale 中创建定时任务

    --添加变量 variable job1 number; --创建JOB begin   dbms_job.submit(:job1,'testjob;',sysdate, 'TRUNC(sysdat ...

  8. storm trident function函数

    package cn.crxy.trident; import java.util.List; import backtype.storm.Config; import backtype.storm. ...

  9. poj 2154 Color(polya计数 + 欧拉函数优化)

    http://poj.org/problem?id=2154 大致题意:由n个珠子,n种颜色,组成一个项链.要求不同的项链数目.旋转后一样的属于同一种.结果模p. n个珠子应该有n种旋转置换.每种置换 ...

  10. Mongodb集群之副本集

    上篇咱们遗留了几个问题 1主节点是否能自己主动切换连接? 眼下须要手动切换 2主节点读写压力过大怎样解决 3从节点每一个上面的数据都是对数据库全量拷贝,从节点压力会不会过大 4数据压力达到机器支撑不了 ...