以前のブログ投稿では、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 コンポーネントの使用法をさらに説明します。乞うご期待。