标签
文档
报表
字数
658 字
阅读时间
3 分钟
一、概述
jacob(java com bridge,java com桥)分为两个部分,jacob.jar,jacob.dll,使用时两个东西的版本要一致,而且还分32位和64位,它的位数和jdk的位数有关,与操作系统的位数无关。它的原理是通过java的jni功能,调用系统组件dll,通过这个com桥来操作com组件(windows的一种软件编程技术)
如果可以在 Java 中调用 COM 组件,就可以充分利用 Java 技能和现有的成熟 COM 工具包,大大简化应用开发的过程。 COM 组件提供了一种与其他语言的互操作方式,叫做自动化(Automation)。 现有的 Java COM 互操作的解决方案有很多种,由于设计目的的不同,在性能、易用性等方面都有很大的区别。本文介绍的 JACOB 开源项目,致力于简化 Java 操作 COM 组件,提供了一个虚拟机独立的自动化服务器实现,由于其通用性设计,您可以非常简单地完成对现有应用的集成。
二、使用
使用需要从官网下载最新的包,得到dll文件和jar包。
dll文件需要放置到jdk的bin目录下(根据系统的位数选择不同的dll)
jar包可以通过以下命令,将jar包导入本地仓库。
cmd
mvn install:install-file -DgroupId=com.jacob -DartifactId=jacob -Dversion=1.20 -Dfile=jacob.jar -Dpackaging=jar项目就能通过mvn添加引用
xml
<dependency>
<groupId>com.jacob</groupId>
<artifactId>jacob</artifactId>
<version>1.20</version>
</dependency>三、office调用
3.1 word转pdf
把Word转成PDF目前最简单的方式就是调用office的方法,本质上就是打开Word后另存为成pdf。使用jacob方式。
最基本的环境:1、本机上安装了2007以上的office软件 2、jdk1.6以上的版本
代码实现:
java
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
public class ExportPdfDemo {
public static void main(String[] args) {
String source = "E:\\员工(姓名)合同.docx";
String target = "E:\\员工(姓名)合同.pdf";
System.out.println("Word转PDF开始启动...");
ActiveXComponent app = null;
try {
// 调用window中的程序
app = new ActiveXComponent("Word.Application");
// 调用的时候不显示窗口
app.setProperty("Visible", false);
// 获得所有打开的文档
Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.call(docs, "Open", source).toDispatch();
System.out.println("转换文档到PDF:" + target);
// 另存为,将文档保存为pdf,其中Word保存为pdf的格式宏的值是17
Dispatch.call(doc, "SaveAs", target, 17);
Dispatch.call(doc, "Close");
} catch (Exception e) {
System.out.println("Word转PDF出错:" + e.getMessage());
} finally {
// 关闭office
if (app != null) {
app.invoke("Quit", 0);
}
}
}
}