강좌 & 팁
글 수 2,412
2014.01.12 19:33:54 (*.52.177.249)
44703
이번시간은 PPT파일을 이미지 파일로 변환하는 샘플을 만들어 보도록 하겠습니다.
먼저 PPT파일을 읽을려면 라이브러리가 필요 합니다.
아래의 주소에서 받으시면 됩니다.
http://poi.apache.org/download.html
다운로드후 압축을 풀면 여러게의 파일이 있는데....
이번에 필요한 파일은 아래와 같습니다.
- poi-3.9-20121203.jar
- poi-scratchpad-3.9-20121203.jar
프로그램 순서는 아래와 같습니다.
1. ppt파일 열기
2. ppt파일을 슬라이드쇼로 열기
3. 슬라이드 사이즈 만큼 루프돌기
4. 루프 돌면서 이미지 파일 변환
[샘플소스]
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.usermodel.SlideShow; /** * PPT파일을 이미지로 변환 * @author falbb * */ public class PPTConvterImage { private String pptFile; private String cvtImgFile; public PPTConvterImage(String pptFile, String cvtImgFile) { this.pptFile = pptFile; this.cvtImgFile = cvtImgFile; } /** * 이미지 변환 실행 * @throws IOException */ public void convter(String type) throws IOException { // PPT파일 FileInputStream is = new FileInputStream(pptFile); SlideShow ppt = new SlideShow(is); // PPT파일 닫기 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(); // 이미지 영역을 클리어 graphics.setPaint(Color.white); graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); // 이미지 그리기 slide[i].draw(graphics); // 파일로 저장 FileOutputStream out = new FileOutputStream(cvtImgFile + (i + 1) + "."+type); ImageIO.write(img, type, out); out.close(); } } /** * @param args */ public static void main(String[] args) { String pptFile = "D:\\DATA\\00278.ppt"; String cvtImgFile = "D:\\DATA\\img\\"; PPTConvterImage cvtImage = new PPTConvterImage(pptFile, cvtImgFile); try { cvtImage.convter("png"); } catch (IOException e) { e.printStackTrace(); } } }
[실행 결과]
샘플은 png파일로 변환 하게 되어있는데 jpg로 변환해서 파일 사이즈를 비교해보는것도 좋을 것 같습니다.
아래의 메소드를 실행할때 타입을 바꿔줘 보세요.
cvtImage.convter("png"); -> cvtImage.convter("jpg");
감사합니다.