poi 读取 ppt,并将内容转换成图片

来源:互联网 发布:arm控制器和单片机 编辑:程序博客网 时间:2024/05/18 01:49
package com.test;import java.awt.Dimension;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.awt.Color;import java.awt.Graphics2D;import java.awt.geom.Rectangle2D;import java.awt.image.BufferedImage;import org.apache.poi.hslf.model.TextRun;import org.apache.poi.hslf.usermodel.RichTextRun;import org.apache.poi.hslf.usermodel.SlideShow;public class PptReader { public static void main(String[] args) {  // 读入PPT文件  File file = new File("F:/20110618.ppt");  doPPTtoImage(file); } public static boolean doPPTtoImage(File file) {  boolean isppt = checkFile(file);  if (!isppt) {   System.out.println("你指定的文件不是ppt文档!");   return false;  }  try {   FileInputStream is = new FileInputStream(file);   SlideShow ppt = new SlideShow(is);   is.close();   Dimension pgsize = ppt.getPageSize();   org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();   for (int i = 0; i < slide.length; i++) {    System.out.print("第" + i + "页。");    if(slide[i].getNotesSheet()!=null&&slide[i].getNotesSheet().getTextRuns()!=null){     //获取第一个备注     System.out.println("备注:" + slide[i].getNotesSheet().getTextRuns()[0].getText());    }    TextRun[] truns = slide[i].getTextRuns();    for (int k = 0; k < truns.length; k++) {     RichTextRun[] rtruns = truns[k].getRichTextRuns();     for (int l = 0; l < rtruns.length; l++) {      rtruns[l].setFontIndex(1);      rtruns[l].setFontName("宋体");      // 获取文本列表      System.out.println(rtruns[l].getText());       }    }    BufferedImage img = new BufferedImage(pgsize.width,      pgsize.height, BufferedImage.TYPE_INT_RGB);    Graphics2D graphics = img.createGraphics();    graphics.setPaint(Color.white);    graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,      pgsize.height));    slide[i].draw(graphics);    // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径    FileOutputStream out = new FileOutputStream("F:/ppttest/pict_"      + (i + 1) + ".jpeg");    javax.imageio.ImageIO.write(img, "jpeg", out);    out.close();   }   System.out.println("ok");   return true;  } catch (FileNotFoundException e) {   System.out.println(e);  } catch (IOException e) {   e.printStackTrace();  }  return false; } // function 检查文件是否为PPT public static boolean checkFile(File file) {  boolean isppt = false;  String filename = file.getName();  String suffixname = null;  if (filename != null && filename.indexOf(".") != -1) {   suffixname = filename.substring(filename.indexOf("."));   if (suffixname.equals(".ppt")) {    isppt = true;   }   return isppt;  } else {   return isppt;  } }}


需要的jar包: poi.jar和poi-scratchpad.jar


转自:http://yijianfengvip.blog.163.com/blog/static/175273432201152311960/