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文档

  • 相关阅读:
    美国商业经济金融发展史
    英国商业经济金融发展史
    NIO入门
    eclipse的debug
    一些待深入的问题
    Django REST Framework(一) Serializer和ModelSerializer
    同步/异步/阻塞/非阻塞/BIO/NIO/AIO各种情况介绍
    为了后端掌握的粗浅前端
    前后端分离之JWT用户认证
    Redis
  • 原文地址:https://www.cnblogs.com/hutton/p/3913928.html
Copyright © 2011-2022 走看看