2011-03-07 51 views
3

你好我试图使用Apache POI框架,以一个百分点的每一张幻灯片转换为个人PNG。问题是有些幻灯片变形了。例如,有一张幻灯片背景的彩虹色。这是对一些幻灯片图像不显示在所有的.png文件转换的PPT PNG的Apache POI

这里是代码:

 FileInputStream is = new FileInputStream(args[0]); 

     SlideShow ppt = new SlideShow(is); 


     is.close(); 

     Dimension pgsize = ppt.getPageSize(); 

     Slide[] slide = ppt.getSlides(); 

     for (int i = 0; i < slide.length; i++) { 

     BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, 
     BufferedImage.TYPE_INT_RGB); 
     Graphics2D graphics = img.createGraphics(); 
     //clear the drawing area 
     graphics.setPaint(Color.white); 
     graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); 

     //render 
     slide[i].draw(graphics); 

     //save the output 
     FileOutputStream out = new FileOutputStream("C:\\Users\\Farzad\\Desktop\\slide-" + (i+1) + ".png"); 
     javax.imageio.ImageIO.write(img, "png", out); 
     out.close(); 
     } 
+0

难道是改变'BufferedImage.TYPE_INT_RGB'提高质量? – Wivani 2011-05-27 08:26:49

+0

您尝试使用哪种版本的POI? PPT渲染的那种得到随着时间的推移改善的事情,所以如果你还没有尝试最新版本,那么它的价值升级 – Gagravarr 2011-09-02 17:33:51

+0

将任何身体告诉我哪个罐子被包括到运行上面的代码。因为我没有获得Dimension,Graphics2D类.. – Panache 2012-07-10 11:53:14

回答

1

对于这个工作,我们没有使用:

graphics.setPaint(Color.white); 

而是使用:

graphics.setPaint(
    slideShow.getSlides()[0].getBackground().getFill().getForegroundColor() 
);