使用 jacob 将ppt 转pdf文件

简介: 
jacob(java com bridge,java com桥)分为两个部分,jacob.jar,jacob.dll,使用时两个东西的版本要一致,而且还分32位和64位,它的位数和jdk的位数有关,与操作系统的位数无关。它的原理是通过java的jni功能,调用系统组件dll,通过这个com桥来操作com组件(windows的一种软件编程技术吧),最终完成对office文档的操作。 

环境配置: 
1、在工程中引入jar包 


2、将dll文件放在jdk的path目录下面,通过System.getProperty("java.library.path");可以看到path路径,或者直接放到jdk/bin、jre/bin、system32/system64下面都放一份,总能找得到,版本要急着对应好。 在这里我直接放到我的jdk的bin目录下


3、代码如下

package com.jeecms.cms.action;
import java.io.File;
import java.io.IOException;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;


public class Word2Pdf {
    static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。
    
    static final int ppSaveAsPDF = 32;// ppt 转PDF 格式
     public static void main(String[] args) throws IOException {
        
          String source3 = "d:\\aa.pptx";
          String target3 = "d:\\cc.pdf";
          Word2Pdf pdf = new Word2Pdf();
           pdf.ppt2pdf(source3, target3);
         }
    
     //PPT文档转PDF
     public void ppt2pdf(String source,String target){
          System.out.println("启动PPT");
          long start = System.currentTimeMillis();
          ActiveXComponent app = null; //创建office的一个应用,比如你操作的是word还是ppt等 
          try {
           app = new ActiveXComponent("Powerpoint.Application");
           //Dispatch 调度处理类,封装了一些操作来操作office
           Dispatch presentations = app.getProperty("Presentations").toDispatch();
           System.out.println("打开文档" + source);
           Dispatch presentation = Dispatch.call(presentations, "Open", 
             source,// FileName
             true,// ReadOnly
             true,// Untitled 指定文件是否有标题。
             false // WithWindow 指定文件是否可见。
             ).toDispatch();
         
           System.out.println("转换文档到PDF " + target);
           File tofile = new File(target);
           if (tofile.exists()) {
            tofile.delete();
           }
           Dispatch.call(presentation,//
             "SaveAs", //
             target, // FileName
             ppSaveAsPDF);
         
           Dispatch.call(presentation, "Close");
           long end = System.currentTimeMillis();
           System.out.println("转换完成..用时:" + (end - start) + "ms.");
          } catch (Exception e) {
           System.out.println("========Error:文档转换失败:" + e.getMessage());
          } finally {
           if (app != null) 
               app.invoke("Quit");
          }
         }
}
4.运行即可转换成功

猜你喜欢

转载自blog.csdn.net/zzh8578741/article/details/84767355