2010-08-12 147 views

回答

1

回答我的问题,我订阅了开发邮件列表,并问到这个问题。

答案是,这functionailty目前不被Apache POI支持

+0

你应该接受你自己的答案。 – 2011-06-01 18:38:14

0

pptx4j可以帮助你在HTML创建SVG(虽然还有很多工作要做,以支持所有的形状);然后你可以使用其中一个工具从一个自动浏览器窗口创建一个图像。

3

在它工作的同时(...从there复制它):

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.FileInputStream; 
import java.io.FileOutputStream; 

import org.apache.poi.xslf.usermodel.XMLSlideShow; 
import org.apache.poi.xslf.usermodel.XSLFSlide; 

public class PptToPng { 
    public static void main(String[] args) throws Exception { 
     FileInputStream is = new FileInputStream("example.pptx"); 
     XMLSlideShow ppt = new XMLSlideShow(is); 
     is.close(); 

     double zoom = 2; // magnify it by 2 
     AffineTransform at = new AffineTransform(); 
     at.setToScale(zoom, zoom); 

     Dimension pgsize = ppt.getPageSize(); 

     XSLFSlide[] slide = ppt.getSlides(); 
     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 out = new FileOutputStream("slide-" + (i + 1) + ".png"); 
      javax.imageio.ImageIO.write(img, "png", out); 
      out.close(); 
     } 
    } 
} 
相关问题