fairnet/src/main/java/seed/utils/SeedCvtPPTToImg.java
2024-09-25 18:30:37 +09:00

164 lines
6.0 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package seed.utils;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
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 javax.imageio.ImageIO;
import org.apache.log4j.Logger;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;
public class SeedCvtPPTToImg {
private Logger log = Logger.getLogger(this.getClass());
// public static void main(String[] args) {
//
// String rootPath = "F:/javaConvert";
// String filePath = "test/test.ppt";
// String output = "F:/javaConvert/test/img/";
//
// new SeedCvtPPTToImg().convert(rootPath, filePath, output);
// }
public void convert(String rootPath, String filePath, String output) {
boolean success = false;
if(filePath.endsWith(".ppt")) {
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);
SlideShow ppt = new SlideShow(fileInputStream);
double zoom = 2; // magnify it by 2
AffineTransform at = new AffineTransform();
at.setToScale(zoom, zoom);
Dimension pgsize = ppt.getPageSize();
Slide[] 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("<!doctype html>");
htmlWriter.write("\n");
htmlWriter.write("<!--[if lt IE 7 ]><html class=\"ie ie6\" lang=\"ko\"><![endif]-->");
htmlWriter.write("\n");
htmlWriter.write("<!--[if IE 7 ]><html class=\"ie ie7\" lang=\"ko\"><![endif]-->");
htmlWriter.write("\n");
htmlWriter.write("<!--[if IE 8 ]><html class=\"ie ie8\" lang=\"ko\"><![endif]-->");
htmlWriter.write("\n");
htmlWriter.write("<!--[if (gte IE 9)|!(IE)]><!--><html lang=\"ko\"><!--<![endif]--> ");
htmlWriter.write("\n");
htmlWriter.write(" <head>");
htmlWriter.write("\n");
htmlWriter.write(" <meta charset=\"utf-8\">");
htmlWriter.write("\n");
htmlWriter.write(" <meta name=\"robots\" content=\"noindex\">");
htmlWriter.write("\n");
htmlWriter.write(" <!--[if IE]>");
htmlWriter.write("\n");
htmlWriter.write(" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">");
htmlWriter.write("\n");
htmlWriter.write(" <![endif]-->");
htmlWriter.write("\n");
htmlWriter.write(" <title>誘몃━蹂닿린 ?˜?댁?</title>");
htmlWriter.write("\n");
htmlWriter.write(" <!-- js -->");
htmlWriter.write("\n");
htmlWriter.write(" <!--[if lte IE 9]>");
htmlWriter.write("\n");
htmlWriter.write(" <script src=\"/js/html5.js\"></script>");
htmlWriter.write("\n");
htmlWriter.write(" <![endif]-->");
htmlWriter.write("\n");
htmlWriter.write(" </head>");
htmlWriter.write("\n");
htmlWriter.write(" <body>");
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(" <img src='/site/"+filePath.substring(0, filePath.lastIndexOf("/"))+"/"+getFileName(filePath)+"/convert/" + getFileName(filePath) + "_" + (i + 1) + ".jpg' alt='" + getFileName(filePath) + "_" + (i + 1) + "' />");
htmlWriter.write("\n");
}
htmlWriter.write(" </body>");
htmlWriter.write("\n");
htmlWriter.write("</html>");
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("."));
}
}