package seed.utils; import java.awt.Dimension; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import org.apache.log4j.Logger; import org.apache.poi.xslf.usermodel.XMLSlideShow; import org.apache.poi.xslf.usermodel.XSLFSlide; public class SeedCvtPPTXToImg { private Logger log = Logger.getLogger(this.getClass()); // public static void main(String[] args) { // // String rootPath = "F:/javaConvert"; // String filePath = "test/test.pptx"; // String output = "F:/javaConvert/test/img/"; // // new SeedCvtPPTXToImg().convert(rootPath, filePath, output); // } public void convert(String rootPath, String filePath, String output) { boolean success = false; if(filePath.endsWith(".pptx")) { File file = new File(rootPath + "/" + filePath); if (file.exists()) { FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; FileOutputStream htmlFileOutputStream = null; OutputStreamWriter htmlOutputStreamWriter = null; BufferedWriter htmlWriter = null; try { fileInputStream = new FileInputStream(file); XMLSlideShow ppt = new XMLSlideShow(fileInputStream); double zoom = 2; // magnify it by 2 AffineTransform at = new AffineTransform(); at.setToScale(zoom, zoom); Dimension pgsize = ppt.getPageSize(); XSLFSlide[] slide = ppt.getSlides(); if(slide.length > 0){ SeedUtils.setSeedMkDirs(output); } //html?Œ???‘?? htmlFileOutputStream = new FileOutputStream(output + "/" + getFileName(filePath) + ".jsp"); htmlOutputStreamWriter = new OutputStreamWriter(htmlFileOutputStream, "UTF-8"); htmlWriter = new BufferedWriter(htmlOutputStreamWriter); htmlWriter.write("<%@ page contentType=\"text/html;charset=utf-8\" %>"); htmlWriter.write("\n"); htmlWriter.write(""); htmlWriter.write("\n"); htmlWriter.write(""); htmlWriter.write("\n"); htmlWriter.write(""); htmlWriter.write("\n"); htmlWriter.write(""); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" 誘몃━蹂닿린 ?˜?댁?"); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(" "); htmlWriter.write("\n"); for (int i = 0; i < slide.length; i++) { BufferedImage img = new BufferedImage((int)Math.ceil(pgsize.width*zoom), (int)Math.ceil(pgsize.height*zoom), BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); graphics.setTransform(at); graphics.setPaint(Color.white); graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); slide[i].draw(graphics); fileOutputStream = new FileOutputStream(output + getFileName(filePath) + "_" + (i + 1) + ".jpg"); ImageIO.write(img, "jpg", fileOutputStream); htmlWriter.write(" " + getFileName(filePath) + "_" + (i + 1) + ""); htmlWriter.write("\n"); } htmlWriter.write(" "); htmlWriter.write("\n"); htmlWriter.write(""); htmlWriter.write("\n"); htmlWriter.flush(); success = true; } catch (FileNotFoundException e) { log.error("CHECK ERROR:",e); success = false; } catch (IOException e) { log.error("CHECK ERROR:",e); success = false; }finally{ if(fileInputStream!=null){try{fileInputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} if(fileOutputStream!=null){try{fileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} if(htmlWriter!=null){try{htmlWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} if(htmlOutputStreamWriter!=null){try{htmlOutputStreamWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} if(htmlFileOutputStream!=null){try{htmlFileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} } } if(!success){ SeedUtils.setSeedDeleteFiles(output, ""); } } } private static String getFileName(String filePath){ int sep = filePath.lastIndexOf("\\") == -1 ? filePath.lastIndexOf("/") : filePath.lastIndexOf("\\"); return filePath.substring( sep + 1 , filePath.lastIndexOf(".")); } }