利用MsOffice将PPT转换成图片

       最近在公司做一个环境检测方面的工作,其中检测的一项内容是MsOffice由PPT转换成Image的功能,下面我详细说下怎样来实现。

       既然要在Eclipse使用该功能,就需要有相应的jar包和dll文件,我们这里用到的jar包便是jacob.jar,用到的dll文件是jacob-1.18-x64.dll(如果你的电脑是32位的话,用到的dll文件是jacob-1.18-x86.dll),那么,我们怎么下载这个jar包和dll文件呢?下面分六步来给大家详细介绍一下。(注意:msoffice功能只能用在Windows系统,Linux系统无法使用)

第一步:打开必应浏览器,网址:cn.bing.com,然后在搜索框中输入jacob.jar,如下图所示。

第二步:点击上图的搜索按钮开始搜索,会进入到如下图所示的界面,我们点击第一个链接进去,如下图所示。

第三步:点击上图的链接之后,我们会进入到如下图所示的界面,我们点击那个很大的绿色按钮"Download"。

第四步:点击上图的"Download"按钮之后,我们会进入到如下图所示的界面,3秒钟后会弹出一个下载对话框,我们点击"另存为"或"保存"就可以下载这个压缩包了。

第五步:解压下载的压缩包,如下图所示。

第六步:我们进入jacob-1.18文件夹,如下图所示,jacob.jar就是我们要用到的开发包。jacob-1.18-x64.dll便是我们要用到的dll。

提示:如果大家对jacob不太熟悉,可以先进入docs文件夹,然后再进入api文件夹,在api文件夹下有一个index.html,打开它,可以看到jacob的功能介绍。

index.html页面如下图所示。

      下载完了jar包和dll文件之后,我们便来说一下该如何运用它来将PPT文件转换成image图片。

第一步:新建一个类,我这里新建的类是TestMsOffice.java,导入我们下载好的jacob.jar,如下图所示。

第二步:在我们的JRE中的bin目录下,放我们刚才下载好的dll文件,如下图所示。

第三步:代码,我们现在D盘根目录下放一个123.pptx文件,在D盘根目录下新建一个test文件夹。

package com.msoffice;
import java.io.File;
import java.io.FileFilter;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;;
public class TestMsOffice {
 public static void main(String[] args) {
  ActiveXComponent active=null;
  Dispatch ppt=null;
  try{
   active=new ActiveXComponent("PowerPoint.Application");//创建一个PPT对象
   Dispatch ppts=active.getProperty("Presentations").toDispatch();//获取文档属性   
   //调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
   //第4,5,6的参数分别表示:ReadOnly,Untititled指定文件是否有标题,WithWindow指定文件是否可见
   ppt=Dispatch.call(ppts, "Open", "D://123.pptx",true,true,false).toDispatch();
   //调用office另存为方法
   Dispatch.call(ppt, "SaveAs","D://test",17);
   reNameFiles("D://test");   
  }catch(Exception e){
   e.printStackTrace();
  }
 }
 /**
  * 将默认生成的幻灯片1.jpg修改成1.jpg
  * @param fileDir
  */
 private static void reNameFiles(String fileDir){
  File file=new File(fileDir);
  if(!file.isDirectory()){
   return;
  }
  final String parentDir=fileDir;
  final int length=String.valueOf(file.listFiles().length).length();
  if(length==0){
   return;
  }
  file.listFiles(new FileFilter(){
   @Override
   public boolean accept(File file) {
    String fileName=file.getName().replace("幻灯片","");
    String name=fileName.substring(0, fileName.indexOf("."));
    for(int i=0;i<length-name.length();i++){
     fileName="0"+fileName;
    }
    File newFile=new File(normalizePath(parentDir+File.separator+fileName));
    if(newFile.exists()){
     newFile.delete();
    }
    file.renameTo(newFile);
    return true;
   }
   
  });
 }
    /**
     * 将文件路径格式化,去掉其中多余的/和\,去掉可能造成文件信息泄露的../
     * @param path
     * @return
     */
 private static String normalizePath(String path) {
     path = path.replace('\\', '/');
     path = replaceEx(path, "../", "/");
     path = replaceEx(path, "./", "/");
     if (path.endsWith("..")) {
        path = path.substring(0, path.length() - 2);
     }
     path = path.replaceAll("/+", "/");
         return path;
 } 
 /**
  * 将一个字符串中的指定片段全部替换,替换过程中不进行正则处理
  * 使用String类的replaceAll时要求片段以正则表达式形式给出,有时较为不便,可以采用本方法
  *
  * @param str
  * @param subStr
  * @param reStr
  * @return
  */
 public static String replaceEx(String str, String subStr, String reStr) {
  if ((str == null) || (str.length() == 0) || (reStr == null)) {
   return str;
  }
  if ((subStr == null) || (subStr.length() == 0) || (subStr.length() > str.length())) {
   return str;
  }
  StringBuilder sb = null;
  int lastIndex = 0;
  while (true) {
   int index = str.indexOf(subStr, lastIndex);
   if (index < 0) {
    break;
   }
   if (sb == null) {
    sb = new StringBuilder();
   }
   sb.append(str.substring(lastIndex, index));
   sb.append(reStr);
   lastIndex = index + subStr.length();
  }
  if (lastIndex == 0) {
   return str;
  }
  sb.append(str.substring(lastIndex));
  return sb.toString();
 } 
}

第四步:检验是否成功将pptx文件转换成了image文件,如下图所示,发现确实将我写的PPT文件转换成了image文件!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值