仿百度文库解决方案之三:JCom调用转换

开发 前端
使用Jcom主要用到ReleaseManager和IDispatch类。ReleaseManager类相当于一个容器,管理机器上的COM组件。配合IDispatch类可以创建COM组件对象。例如创建Excel应用程序的COM对象:

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”); 
  • 1.
  • 2.

另外,在程序结束的最后阶段需要调用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();  
                }  
        }  
    } 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

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;  
         }     
         
     } 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

源代码下载地址:DocConverter

原文链接:http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548510.html

 

责任编辑:张伟 来源: 肖恩也有梦想的博客
相关推荐

2012-06-19 13:32:23

Web

2012-06-18 16:37:41

Web

2012-06-18 16:29:48

Web

2012-06-19 13:45:57

Web

2012-06-19 13:42:08

Web

2012-07-16 14:43:32

silverlight

2012-11-27 09:51:54

百度三星云解决方案

2015-10-28 13:40:28

高仿百度糯米源码

2011-06-02 17:28:24

网站收录

2012-10-19 09:47:30

百度云百度音乐云计算

2011-06-29 08:31:56

收录

2011-05-24 10:40:12

SEO

2015-12-02 17:22:03

百度地图

2011-10-21 09:28:25

百度地图API

2020-09-15 19:29:40

搜索

2013-08-22 17:08:50

点赞
收藏

51CTO技术栈公众号