魅力のあるプレゼンテーションを作成することは、集中力を必要とする緻密な作業です。 完璧な仕上がりにするためには、図形のサイズや位置を変えたり、文字の色を変えたりするなど、常に細部の微調整を行う必要があります。 このため、手動でPowerPointのドキュメントを作成する方が、コードを使用するよりも効率的であることが多いのです。 しかし、場合によっては、プログラミングで行うこともあります。
この記事では、無料のSpire.Presentation for Javaを使って、簡単なPowerPointプレゼンテーションを作成し、そこに基本要素(テキスト形状、画像形状、リスト、テーブルを含む)を挿入する方法を学びます。Spire.Presentation for Javaは、JavaアプリケーションでPowerPointドキュメントを処理するための無料のクラスライブラリです。
この記事の主な内容は、以下の部分を含みます。
- PowerPointドキュメントを作成する
- 最初のスライドを取得し、背景画像を設定する
- テキストを挿入する
- 画像を挿入する
- リストを挿入する
- 表を挿入する
- ドキュメントを保存する
【依存関係の追加】
この方法は、無償のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。
1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.presentation.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
2. 公式サイトよりJarファイルをダウンロード
まず、Free Spire.XLS for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Xls.jarファイルを依存関係としてプロジェクトにインポートしてください。
名前空間の導入
import com.spire.presentation.*;
import com.spire.presentation.drawing.*;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
PowerPointドキュメントを作成する
//Presentationオブジェクトを作成する
Presentation presentation = new Presentation();
//スライドサイズの種類を設定する
presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);
最初のスライドを取得し、背景画像を設定する
新しく作成されたPowerPointドキュメントには、あらかじめ空白のスライドが用意されています。
//最初のスライドを取得する
ISlide slide = presentation.getSlides().get(0);
//背景画像を設定する
String bgImage = "background.jpg";
BufferedImage image = ImageIO.read(new FileInputStream(bgImage));
IImageData imageData = slide.getPresentation().getImages().append(image);
slide.getSlideBackground().setType(BackgroundType.CUSTOM);
slide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
slide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
slide.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);
テキストを挿入する
//テキストを挿入する
Rectangle2D textBounds = new Rectangle2D.Float(50, 50, 440, 100);
IAutoShape textShape = slide.getShapes().appendShape(ShapeType.RECTANGLE, textBounds);
textShape.getFill().setFillType(FillFormatType.NONE);
textShape.getLine().setFillType(FillFormatType.NONE);
String text = "この記事では、Spire.Presentation for Javaを使用して、JavaでPowerPointドキュメントをゼロから作成する方法を紹介します。" +
"この記事では、以下のような作業を行います。";
TextFont titleFont = new TextFont("Calibri (Body)");
textShape.getTextFrame().setText(text);
//テキストの書式を設定する
textShape.getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.LEFT);
PortionEx portionEx = textShape.getTextFrame().getTextRange().getParagraph().getFirstTextRange();
portionEx.getFill().setFillType(FillFormatType.SOLID);
portionEx.getFill().getSolidColor().setColor(Color.lightGray);
portionEx.setLatinFont(titleFont);
portionEx.setFontHeight(20f);
画像を挿入する
//画像を読み込む
String imagePath = " java-logo.png";
Rectangle2D imageBounds = new Rectangle2D.Double(500, 80, 400, 200);
ShapeType shapeType = ShapeType.RECTANGLE;
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(imagePath));
//画像を挿入する
IImageData iImageData = slide.getPresentation().getImages().append(bufferedImage);
IEmbedImage iEmbedImage = slide.getShapes().appendEmbedImage(shapeType, iImageData, imageBounds);
iEmbedImage.getLine().setFillType(FillFormatType.NONE);
iEmbedImage.getPictureFill().setFillType(PictureFillType.STRETCH);
リストを挿入する
//箇条書きを挿入する
Rectangle2D listBounds = new Rectangle2D.Float(50, 160, 440, 180);
String[] listContent = new String[]{
" PowerPointドキュメントを作成する",
" 背景画像を設定する",
" テキストを挿入する",
" 画像を挿入する",
" 箇条書きを挿入する",
" 表を挿入する",
" ドキュメントを保存する"
};
IAutoShape autoShape = slide.getShapes().appendShape(ShapeType.RECTANGLE, listBounds);
autoShape.getTextFrame().getParagraphs().clear();
autoShape.getFill().setFillType(FillFormatType.NONE);
autoShape.getLine().setFillType(FillFormatType.NONE);
for (int i = 0; i < listContent.length; i++) {
//リスト内のテキストの書式を設定する
ParagraphEx paragraph = new ParagraphEx();
autoShape.getTextFrame().getParagraphs().append(paragraph);
paragraph.setText(listContent[i]);
paragraph.getTextRanges().get(0).getFill().setFillType(FillFormatType.SOLID);
paragraph.getTextRanges().get(0).getFill().getSolidColor().setColor(Color.WHITE);
paragraph.getTextRanges().get(0).setLatinFont(new TextFont("Calibri (Body)"));
paragraph.getTextRanges().get(0).setFontHeight(20);
paragraph.setBulletType(TextBulletType.SYMBOL);
}
表を挿入する
//列の幅と行の高さを設定する
Double[] widths = new Double[]{100d, 100d, 100d, 150d, 100d, 100d};
Double[] heights = new Double[]{15d, 15d, 15d, 15d};
//表を追加する
ITable table = presentation.getSlides().get(0).getShapes().appendTable(50, 350, widths, heights);
//テーブルデータを設定する
String[][] data = new String[][]{
{"番号", "名前", "仕事", "就任日", "給与", "年齢"},
{"7369", "藤沢 奈美", "エンジニア", "05/12/2021", "23000.00", "25"},
{"7499", "Nero", "販売員", "03/23/2021", "18000.00", "30"},
{"7566", "Martin", "マネージャー", "12/21/2021", "26000.00", "40"},
};
//テーブルの行と列を循環させる
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
//テーブルにデータをインポートする
table.get(j, i).getTextFrame().setText(data[i][j]);
//各セルのテキストを中央揃えにする
table.get(j, i).getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.CENTER);
}
}
//テーブルにプリセットスタイルを適用する
table.setStylePreset(TableStylePreset.LIGHT_STYLE_1_ACCENT_4);
ドキュメントを保存する
//ドキュメントを保存する
presentation.saveToFile("output/CreatePowerPoint.pptx", FileFormat.PPTX_2013);