Here is what I did:
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;

public class MergeDemo {

        public static void main(String[] args) throws Exception {
                try (FileOutputStream out = new
FileOutputStream("output/MergeMultiplePresentations.pptx")) {
                        XMLSlideShow ppt = new XMLSlideShow();
                        String[] inputs = { "input/default_one.pptx", 
"input/default_two.pptx",
"input/title_two_columns.pptx" };
                        for (String arg : inputs) {
                                FileInputStream is = new FileInputStream(arg);
                                XMLSlideShow src = new XMLSlideShow(is);
                                is.close();

                                for (XSLFSlide srcSlide : src.getSlides()) {
                                        XSLFSlide newSlide = ppt.createSlide();
                                        copySlideContent(srcSlide, newSlide);
                                        newSlide.importContent(srcSlide);
                                }
                                src.close();
                        }

                        ppt.write(out);
                        ppt.close();
                }
        }
        
        private static void copySlideContent(final XSLFSlide slideNeedToMerge,
final XSLFSlide newSlide) {
                XSLFSlideLayout newSlideLayout = newSlide.getSlideLayout();
                XSLFSlideMaster newSlideMaster = newSlide.getSlideMaster();

                XSLFSlideLayout mergeSlideLayout = 
slideNeedToMerge.getSlideLayout();
                XSLFSlideMaster mergeSlideMaster = 
slideNeedToMerge.getSlideMaster();

                try {
                        // copy source layout to the new layout
                        newSlideLayout.importContent(mergeSlideLayout);
                        // copy source master to the new master
                        newSlideMaster.importContent(mergeSlideMaster);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}

But I always got error:
java.lang.ClassCastException: org.apache.poi.ooxml.POIXMLDocumentPart cannot
be cast to org.apache.poi.xslf.usermodel.XSLFPictureData
        at 
org.apache.poi.xslf.usermodel.XSLFSheet.importBlip(XSLFSheet.java:651)
        at
org.apache.poi.xslf.usermodel.XSLFPictureShape.copy(XSLFPictureShape.java:223)
        at
org.apache.poi.xslf.usermodel.XSLFSheet.wipeAndReinitialize(XSLFSheet.java:452)
        at
org.apache.poi.xslf.usermodel.XSLFSheet.importContent(XSLFSheet.java:431)


The slide is overlap with each others.

Any help?




--
Sent from: http://apache-poi.1045710.n5.nabble.com/POI-User-f2280730.html

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to