在非常多企业级应用中都涉及到将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. iOS开发——heightForHeaderInSection设置高度无效

    iOS11之后,tableView设置section高度失效,解决方法有两种: 1.iOS11默认开启Self-Sizing,关闭Self-Sizing即可.在初始化tableview的地方加上下面的 ...

  2. SASS 使用(vs code)

    二.在vs code中编译sass 1.在拓展商店里搜索“easy sass”,并安装,安装成功后点重新加载. 2.接下来进行配置: 在 vs code 菜单栏依次点击“文件 首选项 设置”,打开 s ...

  3. Linux Eslint 命令行

    Linux 命令行 ls : 查看所有文件 ls -la : 编列文件并展示权限 sudo chmod 777 -R   文件名  : 文件权限升级 cp : 复制      cp   file_na ...

  4. 有趣的console

    博文第一篇,就以前端调试的“座上客”---console开始

  5. caioj 1152 快速求模 (快速幂)

    (1)开long long,不然中间结果会溢出 (2)注意一开始的初始化,保险一点. #include<cstdio> #include<cctype> #include< ...

  6. MAVEN flex

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  7. 现代C++ 基于范围的for和for_each语句

    现代C++中强调,使用基于范围的 for 循环(Visual studio 2012之后的),相比于旧版的 for 循环更整洁和易于使用,并且不容易发生意外错误.让我们一睹为快. 当然,使用前需要包含 ...

  8. mysql-基础和基本指令

    基础: 1.数据库模式:简单的说:就是一个数据库用户所拥有的数据库的对象.   比如scott用户建立了表,索引,视图,存储过程等对象,那么这些对象就构成了schema   scott .有时用作数据 ...

  9. JavaScript-html标题滚动效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 自己封装js组件 - 初级

    2天前抱着试试看的态度注册了此神博,心血来潮呕心沥血写了一篇关于vue 自定义组件的小文章 尼玛果然一个评论的没有!果然毫无人气!(当然了我这文章内容有限和大神们的比起来简直是粗制滥造...)索性我就 ...