2010-08-12 8 views

Répondre

1

répondre à ma propre question, je me suis inscrit à la liste de diffusion de développement et posé cette question.

La réponse est que cette functionailty actuellement pas pris en charge par apache poi

+0

Vous devez accepter votre propre réponse. –

0

pptx4j peut vous aider à créer SVG en HTML (bien qu'il y ait encore du travail à faire pour soutenir toutes les formes); et puis vous pourriez utiliser l'un des outils qui créent une image à partir d'une fenêtre de navigateur automatisée.

3

En attendant, il travaille (... copié à partir 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(); 
     } 
    } 
}