DEV Community

Alexis
Alexis

Posted on

Java - How to Create a PowerPoint Presentation

Creating an attractive PowerPoint presentation is a meticulous task that needs the cooperation of brain, eyes, and hands. In order to achieve a perfect effect, we need to constantly fine tune the details, such as adjusting the size and position of a shape, or changing the color of text. Due to this reason, creating PowerPoint documents manually is typically more efficient than using code. However, in certain cases, we may have to do it programmatically.

In this article, you’ll learn how to create a simple PowerPoint document and insert basic elements (including text shape, image shape, list, and table) into it by using Free Spire.Presentation for Java, which is a free class library for processing PowerPoint documents in Java applications. The main tasks of this tutorial are as follows.

  • Create a PowerPoint Document
  • Get the First Slide and Set Background Image
  • Insert a Text Shape
  • Insert an Image Shape
  • Insert a List
  • Insert a Table
  • Save the PowerPoint Document

Add Spire.Presentation.jar as Dependency

If you are working on a maven project, you can include the dependency in pom.xml file using this:

<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.presentation.free</artifactId> <version>5.1.0</version> </dependency> </dependencies> 
Enter fullscreen mode Exit fullscreen mode

If you are not using maven, then you can find the required jar files from the zip file available in this location. Include all the jar files into the application lib folder to run the sample code given in this tutorial.

Import Namespaces

import com.spire.presentation.*; import com.spire.presentation.drawing.*; import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.FileInputStream; 
Enter fullscreen mode Exit fullscreen mode

Create a PowerPoint Document

//Create a Presentation object Presentation presentation = new Presentation(); //Set the slide size type presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9); 
Enter fullscreen mode Exit fullscreen mode

Get the First Slide and Set Background Image

By default, there is one blank slide preset in the newly created PowerPoint document.

//Get the first slide ISlide slide = presentation.getSlides().get(0); //Set the background image String bgImage = "C:\\Users\\Administrator\\Desktop\\background.jpg"; BufferedImage image = ImageIO.read(new FileInputStream(bgImage)); IImageData imageData = slide.getPresentation().getImages().append(image); slide.getSlideBackground().setType(BackgroundType.CUSTOM); slide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE); slide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH); slide.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData); 
Enter fullscreen mode Exit fullscreen mode

Insert a Text Shape

//Insert a text shape Rectangle2D textBounds = new Rectangle2D.Float(50, 50, 440, 100); IAutoShape textShape = slide.getShapes().appendShape(ShapeType.RECTANGLE, textBounds); textShape.getFill().setFillType(FillFormatType.NONE); textShape.getLine().setFillType(FillFormatType.NONE); String text = "This article shows you how to create a PowerPoint document from scratch in Java using Spire.Presentation for Java. " + "The following tasks are involved in this tutorial."; TextFont titleFont = new TextFont("Calibri (Body)"); textShape.getTextFrame().setText(text); //Set the text formatting textShape.getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.LEFT); PortionEx portionEx = textShape.getTextFrame().getTextRange().getParagraph().getFirstTextRange(); portionEx.getFill().setFillType(FillFormatType.SOLID); portionEx.getFill().getSolidColor().setColor(Color.blue); portionEx.setLatinFont(titleFont); portionEx.setFontHeight(20f); 
Enter fullscreen mode Exit fullscreen mode

Insert an Image Shape

//Load an image String imagePath = "C:\\Users\\Administrator\\Desktop\\java-logo.png"; Rectangle2D imageBounds = new Rectangle2D.Double(500, 80, 400, 200); ShapeType shapeType = ShapeType.RECTANGLE; BufferedImage bufferedImage = ImageIO.read(new FileInputStream(imagePath)); //Insert an image shape IImageData iImageData = slide.getPresentation().getImages().append(bufferedImage); IEmbedImage iEmbedImage = slide.getShapes().appendEmbedImage(shapeType, iImageData, imageBounds); iEmbedImage.getLine().setFillType(FillFormatType.NONE); iEmbedImage.getPictureFill().setFillType(PictureFillType.STRETCH); 
Enter fullscreen mode Exit fullscreen mode

Insert a List

//Insert a bulleted list Rectangle2D listBounds = new Rectangle2D.Float(50, 160, 440, 180); String[] listContent = new String[]{ " Create a PowerPoint Document", " Set the background image", " Insert a text shape", " Insert an image shape", " Insert a bulleted list", " Insert a table", " Save the PowerPoint document" }; IAutoShape autoShape = slide.getShapes().appendShape(ShapeType.RECTANGLE, listBounds); autoShape.getTextFrame().getParagraphs().clear(); autoShape.getFill().setFillType(FillFormatType.NONE); autoShape.getLine().setFillType(FillFormatType.NONE); for (int i = 0; i < listContent.length; i++) { //Set the formatting of the list text ParagraphEx paragraph = new ParagraphEx(); autoShape.getTextFrame().getParagraphs().append(paragraph); paragraph.setText(listContent[i]); paragraph.getTextRanges().get(0).getFill().setFillType(FillFormatType.SOLID); paragraph.getTextRanges().get(0).getFill().getSolidColor().setColor(Color.black); paragraph.getTextRanges().get(0).setLatinFont(new TextFont("Calibri (Body)")); paragraph.getTextRanges().get(0).setFontHeight(20); paragraph.setBulletType(TextBulletType.SYMBOL); } 
Enter fullscreen mode Exit fullscreen mode

Insert a Table

//Define column widths and row heights Double[] widths = new Double[]{100d, 100d, 100d, 150d, 100d, 100d}; Double[] heights = new Double[]{15d, 15d, 15d, 15d}; //Add a table ITable table = presentation.getSlides().get(0).getShapes().appendTable(50, 350, widths, heights); //Define table data String[][] data = new String[][]{ {"Emp#", "Name", "Job", "HiringD", "Salary", "Dept#"}, {"7369", "Andrews", "Engineer", "05/12/2021", "1600.00", "20"}, {"7499", "Nero", "Technician", "03/23/2021", "1800.00", "30"}, {"7566", "Martin", "Manager", "12/21/2021", "2600.00", "10"}, }; //Loop through the row and column of the table for (int i = 0; i < data.length; i++) { for (int j = 0; j < data[i].length; j++) { //Fill the table with data table.get(j, i).getTextFrame().setText(data[i][j]); //Align text in each cell to center table.get(j, i).getTextFrame().getParagraphs().get(0).setAlignment(TextAlignmentType.CENTER); } } //Apply a built-in style to table table.setStylePreset(TableStylePreset.LIGHT_STYLE_1_ACCENT_4); 
Enter fullscreen mode Exit fullscreen mode

Save the PowerPoint Document

//Save to file presentation.saveToFile("output/CreatePowerPoint.pptx", FileFormat.PPTX_2013); 
Enter fullscreen mode Exit fullscreen mode

Output

PowerPointScreenshot

Top comments (0)