1
0

More than 3 years have passed since last update.

[Java]スライドマスターを作成して適用する

Posted at

PPTマスターには強力なテンプレート機能があり、ユーザーは必要に応じてスライドのタイトルテキスト、背景画像、テーマの色などをデザインできます。PPTマスターデザインが成功したら、このテンプレートを直接呼び出して他のスライドに適用し、編集の繰り返しを回避できます。
この記事では、Javaアプリケーションでコードを使用してスライドマスタースタイルを作成し、それを他のスライドに適用する方法を紹介します。

JARパッケージのインポート
方法1:Free Spire.Presentation for Javaをダウンロードして解凍し、libフォルダーのSpire.Presentation.jarパッケージを依存関係としてJavaアプリケーションにインポートします。
方法2:Mavenリポジトリから直接JARパッケージをインストールし、pom.xmlファイルを次のように構成します。

<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation.free</artifactId>
        <version>2.6.1</version>
    </dependency>
</dependencies>

ユニークなマスターを作成

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 CreateSlideMaster {

    public static void main(String[] args) throws Exception {


        //PPTドキュメントを作成し、スライドサイズを指定する
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

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

        //画像アドレスを取得
        String backgroundPic = "pic.jpg";
        String logo = "logo.jpg";

        //スライドマスターの背景を設定する
        BufferedImage image = ImageIO.read(new FileInputStream(backgroundPic));
        IImageData imageData = presentation.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));
        imageData = presentation.getImages().append(image);
        IEmbedImage imageShape = masterSlide.getShapes().appendEmbedImage(ShapeType.RECTANGLE,imageData,new Rectangle2D.Float(60,60,220,80));
        imageShape.getLine().setFillType(FillFormatType.NONE);

        //スライドマスターにテキストを追加する
        IAutoShape textShape = masterSlide.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float((float) presentation.getSlideSize().getSize().getWidth()-200,(float) presentation.getSlideSize().getSize().getHeight()-50,200,30));//Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(ppt.SlideSize.Size.Width-200, ppt.SlideSize.Size.Height-60, 200, 30));
        textShape.getTextFrame().setText("作業概要レポート");
        textShape.getTextFrame().getTextRange().setFontHeight(20f);
        textShape.getTextFrame().getTextRange().getFill().setFillType(FillFormatType.SOLID);
        textShape.getTextFrame().getTextRange().getFill().getSolidColor().setColor(Color.BLUE);
        textShape.getTextFrame().getTextRange().getParagraph().setAlignment(TextAlignmentType.CENTER);
        textShape.getFill().setFillType(FillFormatType.NONE);
        textShape.getLine().setFillType(FillFormatType.NONE);

        //スライドを追加
        presentation.getSlides().append();

        //ドキュメントを保存します
        presentation.saveToFile("output/SlideMaster.pptx", FileFormat.PPTX_2013);
        presentation.dispose();
    }
}

s1.jpg

複数のマスターを作成し、スライドに個別に適用する

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.image.BufferedImage;
import java.io.FileInputStream;

public class CreateMultiSlideMasters {

    public static void main(String[] args) throws Exception {

        //新しいPPTドキュメントを作成する
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

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

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

        //2番目のスライドマスターを作成して取得する
        presentation.getMasters().appendSlide(first_master);
        IMasterSlide second_master = presentation.getMasters().get(1);

        //2つのマスターに異なる背景画像を設定する
        String pic1 = "image1.jpg";
        String pic2 = "image2.jpg";
        BufferedImage image = ImageIO.read(new FileInputStream(pic1));
        IImageData imageData = presentation.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);
        image = ImageIO.read(new FileInputStream(pic2));
        imageData = presentation.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);

        //最初のスライドマスターとレイアウトを最初のページに適用します(プレート6は空です)
        presentation.getSlides().get(0).setLayout(first_master.getLayouts().get(6));

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

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

s2.jpg

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