The slide master in PowerPoint preserves some fixed styles, such as background image, title and theme color, which can be inherited by other slides. This article demonstrates how to customize the slide masters in a PowerPoint file and apply them to different slides using Spire.Presentation for Java.
Apply One Slide Master in PowerPoint
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 ModifyAndApplySlideMaster { public static void main(String[] args) throws Exception { //create a Presentation object and specify the 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); //set the background image of the slide master String backgroundPic = "C:/Users/Administrator/Desktop/bg.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); //add an image (company logo) to slide master String logo = "C:/Users/Administrator/Desktop/logo.png"; image = ImageIO.read(new FileInputStream(logo)); imageData = presentation.getImages().append(image); IEmbedImage imageShape = masterSlide.getShapes().appendEmbedImage(ShapeType.RECTANGLE,imageData,new Rectangle2D.Float(40,40,200,60)); imageShape.getLine().setFillType(FillFormatType.NONE); //add some text (company name) to slide master IAutoShape textShape = masterSlide.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float((float) presentation.getSlideSize().getSize().getWidth()-200,(float) presentation.getSlideSize().getSize().getHeight()-60,200,30));//Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(ppt.SlideSize.Size.Width-200, ppt.SlideSize.Size.Height-60, 200, 30)); textShape.getTextFrame().setText("Chengdu E-iceblue Co., Ltd."); textShape.getTextFrame().getTextRange().setFontHeight(15f); 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); //append a new slide presentation.getSlides().append(); //save to file presentation.saveToFile("ModifySlideMaster.pptx", FileFormat.PPTX_2013); presentation.dispose(); } }
Apply Multiple Slide Maters in PowerPoint
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 CreateAndApplyMultiSlideMasters { public static void main(String[] args) throws Exception { //create a Presentation object and specify the slide size Presentation presentation = new Presentation(); presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9); //add four new slides to the presentation for (int i = 0; i < 4; i++) { presentation.getSlides().append(); } //get the first slide master IMasterSlide first_master = presentation.getMasters().get(0); //create another slide master based on the first one presentation.getMasters().appendSlide(first_master); IMasterSlide second_master = presentation.getMasters().get(1); //set different background images for the two masters String pic1 = "C:/Users/Administrator/Desktop/image1.png"; String pic2 = "C:/Users/Administrator/Desktop/image2.png"; 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); //apply the first master along with the layout to the first slide presentation.getSlides().get(0).setLayout(first_master.getLayouts().get(6)); //apply the second master along with the layout to the rest slides for (int i = 1; i < presentation.getSlides().getCount(); i++) { presentation.getSlides().get(i).setLayout(second_master.getLayouts().get(6)); } //save to file presentation.saveToFile("ApplyMultiMasters.pptx", FileFormat.PPTX_2013); presentation.dispose(); } }