2011-03-07 4 views
3

안녕하세요 Apache Poi 프레임 워크를 사용하여 ppt의 각 슬라이드를 개별 PNG로 변환하려고합니다. 문제는 일부 슬라이드가 변형 된 것입니다. 예를 들어 배경에 무지개색이있는 슬라이드가 있습니다. 우리가 사용하지 않아도 작동이 들어Apache poi를 사용하여 ppt를 png로 변환

 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

+0

어떤 POI 버전을 사용하고 계십니까? PPT 렌더링은 시간이 지남에 따라 개선되는 것입니다. 따라서 최신 버전을 사용해 보지 않은 경우 – Gagravarr

+0

을 업그레이드 할 가치가 있습니다. 위의 코드를 실행하기 위해 어떤 병이 포함되는지 알려줄 것입니다. Coz Dimension, Graphics2D 클래스를 얻지 못하고 있습니다. – Panache

답변

1

: 그리고 일부 슬라이드에있는 이미지가 .PNG 파일 여기

에 전혀 나타나지 않는 것은 코드

graphics.setPaint(Color.white); 

대신 사용

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