以poi實現PPT轉html
阿新 • • 發佈:2018-09-26
temp nts user 阿裏 oat ali bag exc ffffff 哈哈,終於兩個月了(筆者不玩網遊,雖然脾氣越來越不好,但是生活越來越充實)。不扯了,今晚還要再寫一篇呢,直接上代碼。
package com.css.java.learning.massbag; 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.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.util.ArrayList; import java.util.List; import org.apache.poi.hslf.model.TextRun; import org.apache.poi.hslf.usermodel.RichTextRun; import org.apache.poi.hslf.usermodel.SlideShow; /** * ppt轉html * @author Red_Ant * 20180925 */ public class PptToHtml { private static void pptToPicture(String tempContextUrl, String outPath){ //文件夾名 List<String> imgList = new ArrayList<String>(); File file = new File(tempContextUrl); File folder = new File(outPath + File.separator + "20180925"); try { folder.mkdirs(); 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++) { 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("宋體"); } } BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); graphics.setPaint(Color.BLUE); graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); slide[i].draw(graphics); String imgName = File.separator + "20180925" + File.separator +"pict_"+ (i + 1) + ".jpeg"; FileOutputStream out = new FileOutputStream(outPath + imgName); javax.imageio.ImageIO.write(img, "jpeg", out); out.close(); imgList.add("20180925" + File.separator +"pict_"+ (i + 1) + ".jpeg"); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } createPPTHtml(outPath,imgList, tempContextUrl); } /**自己創建的html代碼 * 原理上就是,把上一步ppt轉的圖片 * 以html的方式呈現出來 */ public static void createPPTHtml(String wordPath,List<String> imgList,String tempContextUrl){ StringBuilder sb = new StringBuilder("<!doctype html><html><head><meta charset=‘utf-8‘><title>無標題文檔</title></head><body><div align=\"center\">"); if (imgList != null && !imgList.isEmpty()) { for (String img : imgList) { sb.append("<img src=‘" + img + "‘ /><br>"); } } sb.append("</div></body></html>"); try { File file = new File(wordPath + File.separator + "20180925.html"); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8")); bufferedWriter.write(sb.toString()); bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { pptToPicture("D:\\red_ant_file\\20180925\\阿裏巴巴網店的各大模塊.ppt", "D:\\red_ant_file\\20180925"); } }
【後話】
awt包下的代碼基本用不到了,現在出現僅僅是因為筆者比較無聊,純屬娛樂。
運行後。
以poi實現PPT轉html