[Java] [Java] Create and apply slide master

2 minute read

PPT Master has a powerful template feature that allows users to design slide title text, background image, theme color, etc. according to their needs. After a successful PPT master design, you can directly call this template and apply it to other slides to avoid repetitive editing. In this article, I’ll show you how to use code in a Java application to create a slide master style and apply it to other slides.

Import JAR package ** Method 1: ** Download Free Spire.Presentation for Java, unzip it, and open the lib folder. Import the Spire.Presentation.jar package as a dependency into your Java application. Method 2: Install the JAR package directly from the Maven repository and configure the pom.xml file as follows:

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

Create a unique master

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 {


        //Create PPT document and specify slide size
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        // get the first slide master
        IMasterSlide masterSlide = presentation.getMasters().get(0);

        // get the image address
        String backgroundPic = "pic.jpg";
        String logo = "logo.jpg";

        //Set the background of the slide master
        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);

        // Add image to slide master
        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);

        // add text to slide master
        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("Work summary report");
        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);

        // add slide
        presentation.getSlides().append();

        // save the document
        presentation.saveToFile("output/SlideMaster.pptx", FileFormat.PPTX_2013);
        presentation.dispose();
    }
}

s1.jpg

Create multiple masters and apply to slides individually

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 {

        // create a new PPT document
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        / Insert 4 slides (the document has 5 pages, including the default slides)
        for (int i = 0; i <4; i++)
        {
            presentation.getSlides().append();
        }

        // Get the default slide master
        IMasterSlide first_master = presentation.getMasters().get(0);

        //Create and get the second slide master
        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