To merge multiple PowerPoint Presentation files using Java. To achieve this use a Java Library called Apache POI. Apache POI is a project run by the Apache Software Foundation, and previously a sub-project of the Jakarta Project, provides pure Java libraries for reading and writing files in Microsoft Office formats, such as Word, PowerPoint and Excel. Use Apache guide to install the Apache POI libraries for Windows/Linux Systems.
Examples:
Input : file1.pptx, file2.pptx Output: merged.pptx Input : file1.pptx file2.pptx file3.pptx Output: merged.pptx
Input Files:
Output File:
Approach:
- Get the current working directory path and list all the presentation files
- Create an empty Presentation Object using XMLSlideShow from apache POI package
- Iterate through each Presentation File from the list and append slides to the empty Presentation Object
- Save the new merged Presentation File
Below is the implementation of the above approach:
Java
// Merging Multiple PPTs using java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.File; import java.util.*; // importing apache POI environment packages import org.apache.poi.xslf.usermodel.XMLSlideShow; import org.apache.poi.xslf.usermodel.XSLFSlide; public class MergePPT { public static void main(String args[]) throws IOException { // creating empty presentation XMLSlideShow ppt = new XMLSlideShow(); String path = System.getProperty( "user.dir" ); // getting path of current working directory File file = new File(path); // creating empty file using File object String[] fileList = file.list(); // returns an array of all files from current // working directory ArrayList<String> presentationList = new ArrayList<String>(); for (String str : fileList) { if (str.contains( ".pptx" )) presentationList.add(str); } // filtering all presentation file paths and // appending to presentationList if (presentationList.isEmpty() == false ) { for (String arg : presentationList) { FileInputStream inputstream = new FileInputStream(arg); // getting current presentation file path in // a FileInputStream XMLSlideShow src = new XMLSlideShow(inputstream); // getting all the slides of the // presentation file in a XMLSlideShow // object for (XSLFSlide srcSlide : src.getSlides()) { ppt.createSlide().importContent( srcSlide); // appending each presentation slide to // empty presentation object ppt } } String mergedFile = path + "/merged.pptx" ; // creating new file path FileOutputStream out = new FileOutputStream(mergedFile); // creating the file object ppt.write(out); // saving the changes to the new file System.out.println( "All files merged successfully!" ); out.close(); } else System.out.println( "No Presentation files found in current directory!" ); } } |
Output: