Free Spire.Presentation for Java provides a SlideBackground class to work with the background of a slide. By using it, you’re able to set a slide background with a solid fill, a gradient fill, a picture fill or a pattern fill.
In this post, you will learn two ways of applying a background image to all slides in an existing PowerPoint presentation. The first way is to use a for loop to set the background for each slide, and the second way is to use master slide. A master slide can preserve not only background, but also images (for example, company logo) or text that you want to display on all slides.
Here is what the input PowerPoint file looks like.
Method 1. Use a for loop
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;
import com.spire.presentation.SlideBackground;
import com.spire.presentation.drawing.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
public class AppplyBgToAllSlides {
public static void main(String[] args) throws Exception {
//load a PowerPoint file
Presentation presentation = new Presentation();
presentation.loadFromFile("C:\\Users\\Administrator\\Desktop\\input.pptx");
//get the image data
BufferedImage image = ImageIO.read(new FileInputStream("C:\\Users\\Administrator\\Desktop\\bg.jpg"));
IImageData imageData = presentation.getImages().append(image);
//loop through the slides
for (int i = 0; i < presentation.getSlides().getCount() ; i++) {
//apply the image to the certain slide as background
SlideBackground background = presentation.getSlides().get(i).getSlideBackground();
background.setType(BackgroundType.CUSTOM);
background.getFill().setFillType(FillFormatType.PICTURE);
background.getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
background.getFill().getPictureFill().getPicture().setEmbedImage(imageData);
}
//save to file
presentation.saveToFile("output.pptx", FileFormat.PPTX_2013);
presentation.dispose();
}
}
Method 2. Use master slide
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.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
public class ApplySlideMaster {
public static void main(String[] args) throws Exception {
//load a PowerPoint file
Presentation presentation = new Presentation();
presentation.loadFromFile("C:\\Users\\Administrator\\Desktop\\input.pptx");
//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 the 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);
//save to file
presentation.saveToFile("output.pptx", FileFormat.PPTX_2013);
presentation.dispose();
}
}
Top comments (0)