Thanks Andi for your reply. 

My scenario is that i need to create presentations out of slides from
various presentations. In a typical case, I create a new presentation and
keep importing slides content to it using
XMLSlideShow.createSlide().importContent. This method works fine in simple
slides, but if i have slides  like the second slide in the attached
presentation, I get empty slides. 

I tested merging around 8 presentation files with around 450 slides. 100 of
450 slides were empty (25%). These empty slides are not coming from all
presentations. Therefore, it is a serious problem for our application.

I do not think the problem is drawing the slides because i successfully
exported these slides into thumbnails without any problem. Below is the code
to do that?

public class MergeSlideTest {
        public static void main(String[] args) {
                File srcDir = new File("/usr/home/ameer/ test.pptx
<http://apache-poi.1045710.n5.nabble.com/file/n5717802/test.pptx>  slides");

                
                String[] files = {"test.pptx"};

                for (String file : files) {
                        try {
                                FileInputStream fis = new FileInputStream(new 
File(srcDir,file));

                                XMLSlideShow srcSlideShow = new 
XMLSlideShow(fis);

                                XSLFSlide[] slides = srcSlideShow.getSlides();
                                XMLSlideShow destSlideShow = new XMLSlideShow();
                                for (int i = 0; i < slides.length; i++) {
                                        try {
                                                takeSnapshot(slides[i]);
                                                
destSlideShow.createSlide().importContent(slides[i]);
                                        } catch (Exception e) {
                                                System.out.println("Problem in 
exporting " + (i + 1)
                                                                + " from " + 
file);
                                                e.printStackTrace();
                                        }
                                }
                                fis.close();
                                FileOutputStream fos;
                                try {
                                        fos = new FileOutputStream(new 
File("copy-"+file));
                                        destSlideShow.write(fos);
                                        fos.close();
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                                
                                
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                }
                
                
                
        }
        
        public static void takeSnapshot(XSLFSlide slide){
                BufferedImage img = new BufferedImage(600, 600,
BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics = img.createGraphics();
        //clear the drawing area
        graphics.setPaint(Color.white);
        graphics.fill(new Rectangle2D.Float(0, 0, 600, 600));

      
                try {
                          //render
                slide.draw(graphics);
                //save the output
                FileOutputStream out = new FileOutputStream(new
File("slide-thumbnail.png"));
                        javax.imageio.ImageIO.write(img, "png", out);
                        out.close();              
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

}



--
View this message in context: 
http://apache-poi.1045710.n5.nabble.com/How-to-import-complex-shaps-Using-POI-XMLSlideShow-tp5717798p5717802.html
Sent from the POI - User mailing list archive at Nabble.com.

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

Reply via email to