1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaでPowerPointのプレゼンテーションを作成する方法

Posted at

魅力のあるプレゼンテーションを作成することは、集中力を必要とする緻密な作業です。 完璧な仕上がりにするためには、図形のサイズや位置を変えたり、文字の色を変えたりするなど、常に細部の微調整を行う必要があります。 このため、手動で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);

結果のファイル

2022-07-21_174949.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?