仿百度文库解决方案之三:JCom调用转换
来源:互联网 发布:网络解析被劫持 编辑:程序博客网 时间:2024/05/01 15:03
AD:2013云计算架构师峰会超低价抢票中
1. JCom简介
JCom是日本的一个开源项目,其目的同前面介绍的Jacob一样也是为了让Java程序能够访问Windows平台上的COM组件。利用JCom,可以在Java中控制几乎所有的COM对象,而且它还带有一些用于Excel操作的强大的辅助类。
使用Jcom主要用到ReleaseManager和IDispatch类。ReleaseManager类相当于一个容器,管理机器上的COM组件。配合IDispatch类可以创建COM组件对象。例如创建Excel应用程序的COM对象:
- ReleaseManager rmExcel = new ReleaseManager( );
- IDispatch excelApp = new IDispatch(rmExcel,”Excel.Application”);
另外,在程序结束的最后阶段需要调用ReleaseManager类中的release( )方法对创建的ReleaseManager进行资源释放,以免内存溢出。
IDispatch类和Jacob中的Dispatch类相似,代表着COM组件对象,提供了访问微软COM组件对象的属性和方法的接口。IDispatch类中常用的方法如下:
get( )方法:获取COM组件对象的属性,返回一个java.lang.Object类型值。
put( )方法:设置COM组件对象的属性,不返回值。
invoke( )方法:调用COM组件对象的方法,返回一个java.lang.Object类型值。不推荐使用,建议使用method方法。
method( )方法:和invoke( )方法功能一样。
2. JCom调用MS Office COM组件转换Office文档为PDF
2.1 前提条件
JCom是日本人开发的一个开源项目,和Jacob类似,其也是用来调用COM自动化组件。自然JDK的运行环境也是必不可少。JCom也可以利用Microsoft Office API转换文档,那么需要安装Microsoft Office2007或者以上版本,同时Office2007仍需要安装有Microsoft Save as PDF or XPS插件。JCom除了调用Microsoft Office API转换文档为PDF格式的方法之外,还可以利用Adobe Acrobat软件的CreatePDF函数直接将Office格式的文档转换为PDF。因此,如果需要使用Adobe Acrobat转换文档,需要再安装有Adobe Acrobat软件。
2.2 安装配置
下载JCom包,将其解压缩后,提取其中的jcom.jar包配置到Java项目的类路径中,同时也需要将其中的jcom.dll文件放置到windows系统System32目录下,如果不想污染System32目录中的dll文件,也可以将其放置到本机JDK安装目录下的bin文件夹中。
2.3 实现
类似Jacob转换文档为PDF,转换Word为PDF格式的代码如下
- JCom调用MS Office转换word为PDF源代码
- public static void word2PDF(String inputFile,String pdfFile){
- ReleaseManager rm = null;
- IDispatch app = null;
- try {
- rm = new ReleaseManager();
- app = new IDispatch(rm, "Word.Application");//启动word
- app.put("Visible", false); //设置word不可见
- IDispatch docs = (IDispatch) app.get("Documents"); //获得word中所有打开的文档
- IDispatch doc = (IDispatch) docs.method("Open", new Object[]{inputFile,false,true});//打开文档
- doc.method("SaveAs", new Object[]{pdfFile,17});//转换文档为pdf格式
- doc.method("Close", new Object[]{false});
- app.method("Quit", null);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- app=null;
- rm.release();
- rm = null;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
3. JCom调用Acrobat转换Office文档为PDF格式
除了调用MS Office转换文档为PDF的方法之外,还可以调用Adobe Acrobat API转换Office文档为PDF格式,下面是JCom的实现方法,当然也可以用Jacob实现,这里就不做研究了。
- public void convert2PDF(String inputFile, String pdfFile) {
- ReleaseManager rm = new ReleaseManager();
- IDispatch app;
- try {
- app = new IDispatch(rm, "PDFMakerAPI.PDFMakerApp");
- app.method("CreatePDF",new Object[]{inputFile,pdfFile});
- System.out.println("conversion completed!");
- } catch (JComException e) {
- e.printStackTrace();
- }finally{
- app=null;
- rm.release();
- rm = null;
- }
- }
源代码下载地址:DocConverter
原文链接:http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548510.html
- 仿百度文库解决方案之三:JCom调用转换
- 仿百度文库解决方案(三)——利用JCom调用MS Office或者Acrobat API转换文档为PDF
- 仿百度文库解决方案之二:Jacob调用转换
- 仿百度文库解决方案之四:JODConverter调用转换
- 仿百度文库解决方案
- 仿百度文库解决方案
- 仿百度文库解决方案
- 仿百度文库解决方案
- 仿百度文库解决方案
- 仿百度文库解决方案(四)-调用swfTools把pdf格式文件转换成swf格式文件
- 仿百度文库解决方案(三)- 利用JODConverter把文档转换成pdf格式
- 仿百度文库解决方案之六:利用FlexPaper显示Flash
- 仿百度文库解决方案(二)——利用Jacob调用MS Office转换文档为PDF
- 仿百度文库解决方案(四)——利用JODConverter调用OpenOffice.org服务转换文档为PDF
- 仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf
- 仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf
- 仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf
- 仿百度文库解决方案之一:总体思路
- ODBC连接数据库 防止忘记释放内存之使用模版类
- 浅谈Windows Phone 7本地数据库的选择
- 2013年编程语言排行榜:
- 《Android内核剖析》读书笔记 第13章 View工作原理【View树遍历】
- IIS安全参数过滤器(SPF)
- 仿百度文库解决方案之三:JCom调用转换
- HotSpot JVM 对象的内存结构和对象成员的堆内存分配原则
- 关于STM32 ADC实验
- hdu 1969
- 仿百度文库解决方案之四:JODConverter调用转换
- ubuntu : E: Sub-process /usr/bin/dpkg returned an error code (1)
- freebsd下使用串口操作
- Jqgrid入门-Jqgrid格式化数据(九)
- CEasyTip-用钩子封装的CToolTipCtrl