将PPT转为图片
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.model.TextRun; import org.apache.poi.hslf.usermodel.RichTextRun; import org.apache.poi.hslf.usermodel.SlideShow; import org.springframework.stereotype.Component; @Component public class PPTToImgUtil { /** * ppt 文档的转换 后缀名为.ppt * @param pptFile ppt文件 * @param imgFile 图片将要保存的目录(不是文件) * @return */ public boolean doPPTToImage(File pptFile,File imgFile) { FileInputStream is = null; FileOutputStream out = null; try { is = new FileInputStream(pptFile); SlideShow ppt = new SlideShow(is); Dimension pgsize = ppt.getPageSize(); Slide[] slide = ppt.getSlides(); TextRun[] truns = slide[0].getTextRuns(); // 只取ppt第一张 for (int k = 0; k < truns.length; k++) { RichTextRun[] rtruns = truns[k].getRichTextRuns(); for (int l = 0; l < rtruns.length; l++) { // 原有的字体索引 和 字体名字 int index = rtruns[l].getFontIndex(); String name = rtruns[l].getFontName(); // 重新设置 字体索引 和 字体名称 是为了防止生成的图片乱码问题 rtruns[l].setFontIndex(1); rtruns[l].setFontName("宋体"); } } //根据幻灯片大小生成图片 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[0].draw(graphics); /*判断文件目录是否存在,不存在创建*/ if(!imgFile.exists()){ imgFile.mkdir(); } // 图片的保存位置 String absolutePath = imgFile.getAbsolutePath(); File jpegFile = new File(absolutePath); // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径 out = new FileOutputStream(jpegFile); ImageIO.write(img, "jpeg", out); return true; } catch (Exception e) { }finally{ /*注意,流要分开判断,分开关闭*/ if(is!=null){ //及时关闭掉 输入流 try { is.close(); } catch (IOException e) { } } if(out!=null){ //及时关闭掉 输入流 try { out.close(); } catch (IOException e) { } } } return false; } }