パワポの飾りには、やっぱり画像が必要だよね。
Apache POIを使って、パワーポイントに画像を書き込むサンプル
Apache POIを使って、PowerPointのファイルを出力します。
 また、作成するスライドに画像を出力します。
| 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 | import java.awt.Rectangle; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.sl.usermodel.PictureData.PictureType; import org.apache.poi.xslf.usermodel.XMLSlideShow; import org.apache.poi.xslf.usermodel.XSLFPictureData; import org.apache.poi.xslf.usermodel.XSLFPictureShape; import org.apache.poi.xslf.usermodel.XSLFSlide; public class PowerPointImageWriteTest {     public static void main(String[] args) {         try(XMLSlideShow ppt = new XMLSlideShow();             FileOutputStream outputStream = new FileOutputStream("C:\\work\\output.pptx")) {             //スライド追加             XSLFSlide slide = ppt.createSlide();             //画像をスライドに挿入             FileInputStream fis = new FileInputStream("C:\\work\\animals-g4ab333862_1280_1.png");             XSLFPictureData pd = ppt.addPicture(fis, PictureType.PNG);             XSLFPictureShape pictureShape = slide.createPicture(pd);             //画像(シェイプ)の座標設定(左3cm,上5cm,幅16cm,高9cm)             pictureShape.setAnchor(new Rectangle(cmToPt(3), cmToPt(5), cmToPt(16), cmToPt(9)));             //ファイルに書き込み             ppt.write(outputStream);         } catch (IOException e) {             e.printStackTrace();         }     }     private static int cmToPt(int i) {         return (int)(i * 28.34645669);     } } | 
実行結果
PowerPointのファイルが出力されます。
 また、こんな感じで画像が出力されます。
 
サンプルの解説
XMLSlideShow#addPicture(InputStream,PictureData.PictureType)で画像データXSLFPictureDataを作成。
 XSLFSlide#createPicture(XSLFPictureData)で画像ファイルを貼り付けできます。
その後、このサンプルでは画像シェイプの位置調整をしています。
 XSLFPictureShape#setAnchor(Rectangle)で行う位置はポイントで指定します。
 cmからざっくり変換してますんで、位置は少々アバウトですw
※このコードを使用するには、別途Apache POIの入手が必要です。
 入手方法などはこちらの記事に書いてあります。










