以前のブログ投稿では、Java を使用した Microsoft PowerPoint PPTX ファイルの作成と更新のための Apache POI XSLF API を調査しました。 Apache POI for Java を使用すると、内部ファイル形式の詳細に入ることなく、Java アプリケーション内から PPT および PPTX ファイルを操作できます。 この記事では、Apache POI API を使用して Java で PPTX に画像を挿入する方法を詳しく説明します。 Java を使用して PPTX ファイルから画像情報を読み取る方法も見ていきます。
システム要求
始める前に、システムが次の要件を満たしていることを確認してください。
- JDK – Java SE 2 JDK 1.5 以降
- メモリ – 1 GB Ram
- オペレーティング システム – Windows/Linux/Mac OS
Java 用 Apache POI のインストール
アプリケーションで Apache POI ライブラリを使用するには、Eclipse、IntelliJ IDEA、またはその他の使い慣れた IDE などの Java 開発環境が必要です。次に、以下に示すように、アプリケーションの pom.xml ファイルに Apache POI Maven 依存関係を追加します。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.23.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
PPTX ファイルに画像を追加するための Java ライブラリ
この段階では、開発環境の準備ができていると想定しており、PowerPoint プレゼンテーション ファイルに画像を追加するコードの作成から始めることができます。これは、XSLFSlide クラスの createPicture() メソッドを使用して実現されます。 PowerPoint でスライドに画像を挿入するには、次の手順を実行します。
- XMLSlideShow クラスのインスタンスを作成する
- 手順 1 のプレゼンテーション インスタンスで createSlide メソッドを呼び出して、プレゼンテーションにスライドを追加します。
- ファイルから画像をバイト配列としてロードし、XSLFPictureData インスタンスに追加します。
- スライドのインスタンスで createPicture メソッドを呼び出します。
- プレゼンテーションを出力に保存する
次のコード サンプルは、これらの手順を示しています。
//creating a presentation
XMLSlideShow pptx = new XMLSlideShow();
//creating a slide in it
XSLFSlide slide = pptx.createSlide();
//reading an image
File image = new File("fileformat.png");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
//adding the image to the presentation
XSLFPictureData idx = pptx.addPicture(picture, PictureType.PNG);
//creating a slide with given picture on it
XSLFPictureShape pic = slide.createPicture(idx);
//creating a file object
File file = new File("imagetopresentation.pptx");
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
pptx.write(out);
out.close();
PPTX ファイルから画像情報を読み取る
Java 用 Apache POI API を使用すると、XMLSlideShow クラスの getPictureData() メソッドを使用して、PPTX ファイル 内からすべての画像のデータを読み取ることができます。次のサンプル コードは、プレゼンテーションから画像を読み取ることによってこの機能を示します。
//open an existing presentation
File file = new File("imagetopresentation.pptx");
XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(file));
//reading all the images from the presentation
for(XSLFPictureData data : pptx.getPictureData()){
byte[] bytes = data.getData();
String fileName = data.getFileName();
PictureType pictureFormat = data.getType();
System.out.println("picture name: " + fileName);
System.out.println("picture format: " + pictureFormat);
}
//saving the changes to a file
FileOutputStream out = new FileOutputStream(file);
pptx.write(out);
out.close();
結論
PowerPoint プレゼンテーション ファイルを操作するための Apache POI コンポーネントを使用すると、Java アプリケーション内から PowerPoint PPT および PPTX ファイルに画像を挿入できます。スライド上の画像から画像情報を読み取ることもできます。今後のブログでは、PowerPoint プレゼンテーションを操作するための Apache POI Java コンポーネントの使用法をさらに説明します。乞うご期待。