zoukankan      html  css  js  c++  java
  • 利用JCom调用MS Office或者Acrobat API转换文档为PDF(转)

    From http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548510.html

    1. JCom简介

    om是日本的一个开源项目,其目的同前面介绍的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实现,这里就不做研究了。

    JCom调用Acrobat转换Office文档为PDF
    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 public void convert2PDF(String inputFile, String pdfFile)  {
     2         
     3 
     4         ReleaseManager rm = new ReleaseManager();
     5         IDispatch app;
     6         try {
     7             app = new IDispatch(rm, "PDFMakerAPI.PDFMakerApp");
     8             app.method("CreatePDF",new Object[]{inputFile,pdfFile});
     9             System.out.println("conversion completed!");
    10         } catch (JComException e) {
    11             e.printStackTrace();
    12         }finally{
    13              app=null;
    14              rm.release();
    15              rm = null;
    16         }   
    17       
    18     }
    复制代码

     格式文档说明:

        

    0:doc  2:txt  8:html  9:htm 11:xml  12:docx  17:pdf 18:xps

    如本文中的17(doc.method("SaveAs", new Object[]{pdfFile,17})),则代码表转换为pdf文档

  • 相关阅读:
    Sprinig.net 双向绑定 Bidirectional data binding and data model management 和 UpdatePanel
    Memcached是什么
    Spring.net 网络示例 codeproject
    jquery.modalbox.show 插件
    UVA 639 Don't Get Rooked
    UVA 539 The Settlers of Catan
    UVA 301 Transportation
    UVA 331 Mapping the Swaps
    UVA 216 Getting in Line
    UVA 10344 23 out of 5
  • 原文地址:https://www.cnblogs.com/hutton/p/3913928.html
Copyright © 2011-2022 走看看