Apache POI HSLF
Microsoft® PPT プレゼンテーション ファイル形式の Java ライブラリ
スライドと画像をプレゼンテーションに追加し、オープンソースの無料 Java API を使用して PPT ファイルを変換します。
Apache POI HSLF とは何ですか?
Apache POI HSLF は、PowerPoint プレゼンテーションを読み取り、作成、変更、またはレンダリングするための純粋な Java 実装です。 PowerPoint プレゼンテーションの PPT ファイル形式を読み取り、作成、または変更する方法を提供します。テキスト、画像、サウンド、埋め込みオブジェクトなどのデータを PowerPoint プレゼンテーションから抽出するためのサポートを提供します。
また、スライドへの図形の描画、ハイパーリンク、表、画像の追加、ヘッダーとフッターのカスタマイズ、箇条書きリストの作成、埋め込みサウンドの取得などもサポートしています。
Apache POI HSLF を使ってみる
まず、システムに Java Development Kit (JDK) をインストールする必要があります。既にお持ちの場合は、Apache POI の ダウンロード ページに進み、最新の安定版リリースをアーカイブから入手してください。必要なライブラリーを Java プログラムにリンクできる任意のディレクトリーに ZIP ファイルの内容を抽出します。それだけです!
Maven ベースの Java プロジェクトで Apache POI を参照するのはさらに簡単です。必要なのは、pom.xml に次の依存関係を追加し、IDE が Apache POI Jar ファイルを取得して参照できるようにすることだけです。
Apache POI Maven の依存関係
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.0</version>
</dependency>
新しい PPT を動的に作成するか、既存のプレゼンテーションを変更します
Apache POI HSLF を使用すると、プログラマーは新しい PowerPoint プレゼンテーションを PPT ファイル形式で作成できます。開発者は、必要に応じて既存のプレゼンテーションを変換することもできます。この API は、PowerPoint プレゼンテーションからテキスト、画像、サウンド、埋め込みオブジェクトなどのデータを抽出する機能もサポートしています。
PPT ファイルの作成 - Java
// create a new PPT file
FileOutputStream fileOutputStream = new FileOutputStream(new File("Slide.ppt"));
// create a new slide show
HSLFSlideShow xmlSlideShow = new HSLFSlideShow();
// save file
xmlSlideShow.write(fileOutputStream);
スライド、画像を追加し、ヘッダーとフッターを PPT にカスタマイズする
開発者は、Apache HSLF API を使用して、PPT プレゼンテーション内の独自のニーズに応じて、新しいスライドを簡単に追加したり、既存のスライドを変更したりできます。開発者は、カスタマイズされたヘッダーとフッターをプレゼンテーションに追加できるようになりました。また、スライドのタイトルの追加、事前定義されたレイアウトでのスライドの作成、スライド/図形の背景の操作などを完全にサポートします。
Java経由でPPTに画像を挿入
- FileOutputStream を使用して新しい PPT ファイルを作成し、出力ファイル名を文字列として new File() のインスタンスを渡します
- HSLFSlideShow() メソッドを使用して新しいスライド ショーを追加する
- createSlide() メソッドを使用して新しいスライドを追加する
- IOUtils.toByteArray() メソッドを使用して画像バイトを取得し、 FileInputStream() メソッドを介して画像を渡します
- hslfSlideShow.addPicture(picture, HSLFPictureData.PictureType.PNG) メソッドを使用して、スライドに画像を追加します。このメソッドは、ピクチャ バイトとピクチャ タイプを引数として受け取ります。
- ファイルを書き込んで保存する
PPT に画像を追加 - Java
// create a new PPT file
FileOutputStream fileOutputStream = new FileOutputStream(new File("AddImage.ppt"));
// create a new slide show
HSLFSlideShow hslfSlideShow = new HSLFSlideShow();
// create slide
HSLFSlide slide = hslfSlideShow.createSlide();
// load image
byte[] picture = IOUtils.toByteArray(new FileInputStream(new File("apache-poi-logo-min.png")));
// add image
HSLFPictureData hslfPictureData = hslfSlideShow.addPicture(picture, HSLFPictureData.PictureType.PNG);
HSLFPictureShape pictureShape = slide.createPicture(hslfPictureData);
// save file
hslfSlideShow.write(fileOutputStream);
// close stream
fileOutputStream.close();
Java API を使用してスライドを画像形式に変換する
Apache POI HSLF API を使用すると、ソフトウェア開発者は、PowerPoint プレゼンテーションの各スライドを Java アプリケーション内の画像ファイル形式に変換できます。スライドを java.awt.Graphics2D オブジェクト (またはその他のオブジェクト) にキャプチャし、PNG または JPEG 形式にシリアル化できます。サポートされている画像は、JPEG、PNG、DIB などです。
PPT を画像に変換 - Java
//open an existing PPT file
HSLFSlideShow hslfSlideShow = new HSLFSlideShow(new FileInputStream(new File("PPTtoImage.ppt")));
// get dimensions
Dimension pgsize = hslfSlideShow.getPageSize();
java.util.List slide = hslfSlideShow.getSlides();
for (int i = 0; i < slide.size(); i++) {
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height,BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// clear the drawing area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
// render
slide.get(i).draw(graphics);
// create image
FileOutputStream out = new FileOutputStream("PPTtoImage.png");
javax.imageio.ImageIO.write(img, "png", out);
out.close();
}