У кого-нибудь есть пример Apache POI, конвертирующего PPTX в PNG? - PullRequest
3 голосов
/ 12 августа 2010

Кто-нибудь знает хороший пример преобразования презентации PPTX powerpoint в какую-либо форму изображения? PNG / GIF / и т.д.

Я могу сделать это для PPT, но ищу пример преобразования PPTX

Спасибо

Ответы [ 4 ]

3 голосов
/ 28 апреля 2013

Тем временем он работает (... скопировал его из там ):

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();
        }
    }
}
1 голос
/ 26 мая 2016

Есть пример класса PPTX2PNG, теперь связанный с POI, который, кажется, работает с приличными результатами для колод PPTX, которые я бросил:

http://svn.apache.org/repos/asf/poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java

1 голос
/ 13 августа 2010

Отвечая на мой собственный вопрос, я подписался на список рассылки для разработчиков и задал этот вопрос.

Ответ заключается в том, что в настоящее время apache poi

не поддерживает эту функцию.
0 голосов
/ 18 сентября 2010

pptx4j может помочь вам создать SVG в HTML (хотя еще предстоит проделать работу для поддержки всех форм); и тогда вы могли бы использовать один из инструментов, которые создают изображение из автоматизированного окна браузера.

...