0
0

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スライドマスターを作成して適用する方法

Last updated at Posted at 2022-02-23

スライドマスターによって、フォント、プレースホルダーのサイズや位置、背景のデザインや配色など、デザインテンプレート情報をスライドに事前に保存できます。セットマスターは、すべてのスライドに適用することも、複数の異なるマスターをに適用して設計することもできます。別のスライド。以下では、Javaコードの例を使用して、単一のマスターとさまざまなマスターを作成する方法について説明します。

使用したツール:Free Spire.Office for Java(無料版)

jarの取得とインポート:公式Webサイトからjarパッケージを**ダウンロード**し、libフォルダー内のjarファイルを解凍してJavaプログラムにインポートします。

次のようにエフェクトをインポートします。
01.png

##Javaコード一覧

###1. 単一のマスターを作成し、すべてのスライドに適用する

import com.spire.presentation.*;
import com.spire.presentation.drawing.BackgroundType;
import com.spire.presentation.drawing.FillFormatType;
import com.spire.presentation.drawing.IImageData;
import com.spire.presentation.drawing.PictureFillType;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;


public class CreateMasterSlide {
    public static void main(String[] args) throws Exception {
        //PowerPointドキュメントを作成し、スライドサイズを設定する
        Presentation ppt = new Presentation();
        ppt.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        //最初のマスターを取得する
        IMasterSlide masterSlide = ppt.getMasters().get(0);

        //マスターの背景を設定する
        BufferedImage image = ImageIO.read(new FileInputStream("tp.png"));
        IImageData imageData = ppt.getImages().append(image);
        masterSlide.getSlideBackground().setType(BackgroundType.CUSTOM);
        masterSlide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
        masterSlide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
        masterSlide.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);

        //マスターに画像を追加する
        image = ImageIO.read(new FileInputStream("logo.png"));
        imageData = ppt.getImages().append(image);
        IEmbedImage imageShape = masterSlide.getShapes().appendEmbedImage(ShapeType.RECTANGLE,imageData,new Rectangle2D.Float((float) ppt.getSlideSize().getSize().getWidth()-240,40,60,60));
        imageShape.getLine().setFillType(FillFormatType.NONE);

        //マスターにテキストを追加する
        IAutoShape textShape = masterSlide.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float((float) ppt.getSlideSize().getSize().getWidth()-230,85,200,30));
        textShape.getTextFrame().setText("サンプル文字");
        textShape.getTextFrame().getTextRange().setFontHeight(20f);
        textShape.getTextFrame().getTextRange().getFill().setFillType(FillFormatType.SOLID);
        textShape.getTextFrame().getTextRange().getFill().getSolidColor().setColor(Color.black);
        textShape.getTextFrame().getTextRange().getParagraph().setAlignment(TextAlignmentType.CENTER);
        textShape.getFill().setFillType(FillFormatType.NONE);
        textShape.getLine().setFillType(FillFormatType.NONE);

        //スライドを追加する(PowerPointドキュメントを作成する場合、デフォルトでスライドが生成されています。ここにスライドを追加して、マスターを追加した場合の結果を比較してください)
        ppt.getSlides().append();

        //ドキュメントを保存する
        ppt.saveToFile("CreateSlideMaster.pptx", FileFormat.PPTX_2013);
        ppt.dispose();
    }
}

マスターを作成した結果:
02.png

###2. 異なるスライドに適用する複数のマスターを作成する

import com.spire.presentation.*;
import com.spire.presentation.drawing.BackgroundType;
import com.spire.presentation.drawing.FillFormatType;
import com.spire.presentation.drawing.IImageData;
import com.spire.presentation.drawing.PictureFillType;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;

public class CreateMasterSlide2 {
    public static void main(String[] args) throws Exception{
        //PowerPointドキュメントを作成し、スライドサイズを設定する
        Presentation ppt = new Presentation();
        ppt.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        //4枚のスライドを挿入する(デフォルトのスライドを含めて、ドキュメントには5ページある)
        for (int i = 0; i < 4; i++)
        {
            ppt.getSlides().append();
        }

        //デフォルトのマスターを取得する
        IMasterSlide first_master = ppt.getMasters().get(0);

        //2番目のマスターを作成して入手する
        ppt.getMasters().appendSlide(first_master);
        IMasterSlide second_master = ppt.getMasters().get(1);

        //2つのマスターごとに異なる背景画像を設定する
        BufferedImage image = ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Pictures\\pic1.png"));
        IImageData imageData = ppt.getImages().append(image);
        first_master.getSlideBackground().setType(BackgroundType.CUSTOM);
        first_master.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
        first_master.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
        first_master.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);
        IAutoShape textShape = first_master.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float((float) ppt.getSlideSize().getSize().getWidth()/3,180,400,30));
        textShape.getTextFrame().setText("ホームマスター");
        textShape.getTextFrame().getTextRange().setFontHeight(40f);
        textShape.getTextFrame().getTextRange().getFill().setFillType(FillFormatType.SOLID);
        textShape.getTextFrame().getTextRange().getFill().getSolidColor().setColor(Color.red);
        textShape.getTextFrame().getTextRange().getParagraph().setAlignment(TextAlignmentType.CENTER);
        textShape.getFill().setFillType(FillFormatType.NONE);
        textShape.getLine().setFillType(FillFormatType.NONE);

        image = ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Pictures\\pic2.png"));
        imageData = ppt.getImages().append(image);
        second_master.getSlideBackground().setType(BackgroundType.CUSTOM);
        second_master.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
        second_master.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
        second_master.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);

        //最初のマスターとレイアウトを最初のページに適用する
        ppt.getSlides().get(0).setLayout(first_master.getLayouts().get(6));

        //2番目のマスターとレイアウトを残りのスライドに適用する
        for (int i = 1; i < ppt.getSlides().getCount(); i++)
        {
            ppt.getSlides().get(i).setLayout(second_master.getLayouts().get(6));
        }

        //ドキュメントを保存する
        ppt.saveToFile("MultiSlideMaters.pptx", FileFormat.PPTX_2013);
        ppt.dispose();
    }
}

複数のマスターを作成した結果:
03.png

今回のPowerPointスライドマスターを作成して適用する方法は以上でした、最後まで読んでいただきありがとうございます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?