在非常多企业级应用中都涉及到将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. React显示文件夹中SVG

    import React from 'react'; import _ from 'lodash'; import styles from './iconPicker.less'; const req ...

  2. SP687 REPEATS - Repeats(后缀数组)

    一个初步的想法是我们枚举重复子串的长度\(L\).然后跑一遍SA.然后我们枚举一个点\(i\),令他的对应点为\(i+L\),然后求出这两个点的LCP和LCS的长度答案就是这个点的答案就是\((len ...

  3. [NOIP2012提高组]疫情控制

    题目:洛谷P1084.codevs1218.Vijos P1783. 题目大意:有一棵n个节点的,根为1的带权树和m支军队.每支军队可以在一个点上停下,那么从1开始就不能经过这个点了.现在有m支军队已 ...

  4. windows系统关闭端口占用进程

    1.查找端口占用进程ID netstat -ano|findstr " 2.通过进程ID查找进程名 tasklist |findstr " 3.杀死进程(指定进程ID或进程名) t ...

  5. 洛谷 P2818 天使的起誓

    P2818 天使的起誓 题目描述 Tenshi非常幸运地被选为掌管智慧之匙的天使.在正式任职之前,她必须和其他新当选的天使一样要宣誓.宣誓仪式是每位天使各自表述自己的使命,他们的发言稿放在n个呈圆形排 ...

  6. HDU 1827 Summer Holiday(强连通)

    HDU 1827 Summer Holiday 题目链接 题意:中文题 思路:强连通缩点,每一个点的权值为强连通中最小值,然后入度为0的点就是答案 代码: #include <cstdio> ...

  7. IIS预编译提升载入速度

    当我们把站点部署在IIS7或IIS6S的时候,每当IIS或是ApplicationPool重新启动后,第一次请求站点反应总是非常慢.原因大家都知道(不知道能够參考这个动画说明ASP.NET网页第一个R ...

  8. vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)

    P1543极值问题 Accepted 标签:[显示标签] 背景 小铭的数学之旅2. 描写叙述 已知m.n为整数,且满足下列两个条件: ① m.n∈1,2.-,K ② (n^ 2-mn-m^2)^2=1 ...

  9. MFC中CFileDialog使用方法

    用CFileDialog选择了一个文件后,使用FILE::fopen打开文件错误,使用 的是相对地址.和王工调试了半天,怎么跟踪也没发现错误,原来如此. .... .. . . CFileDialog ...

  10. spark rdd saveAsTextFile保存为文件

    sc.parallelize(["one", "two", "two", "three", "three&qu ...