이번시간은 PPT파일을 이미지 파일로 변환하는 샘플을 만들어 보도록 하겠습니다.

먼저 PPT파일을 읽을려면 라이브러리가 필요 합니다.

아래의 주소에서 받으시면 됩니다.

http://poi.apache.org/download.html

poi_download.png


다운로드후 압축을 풀면 여러게의 파일이 있는데....

이번에 필요한 파일은 아래와 같습니다.

- 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();
		}
	}
}



[실행 결과]

img_convert.png



샘플은 png파일로 변환 하게 되어있는데 jpg로 변환해서 파일 사이즈를 비교해보는것도 좋을 것 같습니다.

아래의 메소드를 실행할때 타입을 바꿔줘 보세요.

cvtImage.convter("png");  -> cvtImage.convter("jpg");


감사합니다.