package uap.pub.fs.pre.poi; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.Rectangle2D.Float; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Base64; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.TreeSet; import javax.imageio.ImageIO; import nc.bs.logging.Logger; import org.apache.poi.sl.draw.DrawFactory; import org.apache.poi.sl.usermodel.Shape; import org.apache.poi.sl.usermodel.Slide; import org.apache.poi.sl.usermodel.SlideShow; import org.apache.poi.sl.usermodel.SlideShowFactory; import org.apache.poi.xslf.usermodel.XSLFTextParagraph; import org.apache.poi.xslf.usermodel.XSLFTextRun; import org.apache.poi.xslf.usermodel.XSLFTextShape; import uap.pub.fs.pre.poi.IPoiConvertService; public class PPTConvertServiceImpl implements IPoiConvertService { OutputStream output; public String convertHtml(String fileType, InputStream input, OutputStream output) throws Exception { this.output = output; return "ppt".equals(fileType)?this.convertBaseFile(input):this.convertXFile(input); } public String convertBaseFile(InputStream input) throws Exception { StringBuffer sb = new StringBuffer(); sb.append(this.transferPPT(input)); return sb.toString(); } public String convertXFile(InputStream input) throws Exception { StringBuffer sb = new StringBuffer(); sb.append(this.transferPPT(input)); return sb.toString(); } public String transferPPT(InputStream input) throws Exception { StringBuffer sb = new StringBuffer(); sb.append("
"); sb.append(" "); sb.append(""); String slidenumStr = "-1"; float scale = 3.0F; SlideShow j = SlideShowFactory.create(input); Throwable sbSub = null; try { List slides = j.getSlides(); Set slidenum = slideIndexes(slides.size(), slidenumStr); if(slidenum.isEmpty()) { String var35 = ""; return var35; } Dimension pgsize = j.getPageSize(); int width = (int)((float)pgsize.width * scale); int height = (int)((float)pgsize.height * scale); Iterator var12 = slidenum.iterator(); while(var12.hasNext()) { Integer slideNo = (Integer)var12.next(); Slide slide = (Slide)slides.get(slideNo.intValue()); Iterator img = slide.getShapes().iterator(); while(img.hasNext()) { Shape graphics = (Shape)img.next(); if(graphics instanceof XSLFTextShape) { XSLFTextShape j1 = (XSLFTextShape)graphics; Iterator sbSub1 = j1.getTextParagraphs().iterator(); while(sbSub1.hasNext()) { XSLFTextParagraph paragraph = (XSLFTextParagraph)sbSub1.next(); List truns = paragraph.getTextRuns(); Iterator var21 = truns.iterator(); while(var21.hasNext()) { XSLFTextRun trun = (XSLFTextRun)var21.next(); trun.setFontFamily("宋体"); } } } } BufferedImage var36 = new BufferedImage(width, height, 2); Graphics2D var37 = var36.createGraphics(); var37.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); var37.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); var37.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); var37.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); var37.setPaint(Color.white); var37.fill(new Float(0.0F, 0.0F, (float)width, (float)height)); DrawFactory.getInstance(var37); var37.scale((double)scale, (double)scale); slide.draw(var37); if(!"null".equals("jpg")) { sb.append(this.getBase64(var36)); } if(sb.length() > 1000) { for(int var38 = 0; var38 * 1000 < sb.length(); ++var38) { String var39 = sb.substring(var38 * 1000, (var38 + 1) * 1000 > sb.length()?sb.length():(var38 + 1) * 1000); this.output.write(var39.toString().getBytes("UTF-8")); } sb.setLength(0); } var37.dispose(); var36.flush(); } } catch (Throwable var31) { sbSub = var31; throw var31; } finally { if(j != null) { if(sbSub != null) { try { j.close(); } catch (Throwable var30) { sbSub.addSuppressed(var30); } } else { j.close(); } } } sb.append("