スライドを画像にすれば、パワポはお絵かきツールw
Apache POIを使って、パワーポイントのスライドを画像出力するサンプル
Apache POIを使って、PowerPointのスライドをPNG形式の画像を出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.List; import javax.imageio.ImageIO; import org.apache.poi.xslf.usermodel.XMLSlideShow; import org.apache.poi.xslf.usermodel.XSLFSlide; public class PowerPointImageWriteTest { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("c:\\work\\in.pptx"); XMLSlideShow ppt = new XMLSlideShow(fis)) { //スライドの数だけ回す List<XSLFSlide> slieList = ppt.getSlides(); for (int i=0 ; i<slieList.size() ; i++) { //スライドを取得 XSLFSlide slide = slieList.get(i); //スライドのサイズでイメージを作成。グラフィックスを取得。 BufferedImage image = new BufferedImage(ppt.getPageSize().width, ppt.getPageSize().height,BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); //スライドの内容をグラフィックスに描画 slide.draw(g); //画像ファイルを出力 ImageIO.write(image, "png", new File("c:\\work\\output.png")); } } catch (IOException e) { e.printStackTrace(); } } } |
実行結果
読み込んだパワーポイントのスライドをもとに、PNG形式の画像ファイルが作成されます。
スライド内の画像の透明度、蛍光ペンなどいくつかは正しく反映されませんが、それなりに出力されますw
読み込み元のパワポはこんな感じ。
書き込み先のPNG画像はこんな感じ。
サンプルの解説
XSLFSlide#draw(Graphics)を使うと、スライド内容をグラフィックスに書き込むことができます。
ですので、あらかじめBufferedImageなどを用意して、グラフィックスを取得しておきます。
書き込んだ後は、BufferedImageなどのイメージをファイルへ出力するだけですね。
また、全角文字を使う時には、パワポでフォントを必ず指定しておく必要があります。
指定しないと化けてしまいます。
※このコードを使用するには、別途Apache POIの入手が必要です。
入手方法などはこちらの記事に書いてあります。