±âŸ(framework)
2018.06.06 / 10:41

ppt to image/pdf º¯È¯

ÀλçÀ̵åÀÚ¹Ù
Ãßõ ¼ö 201

ppt ÆÄÀÏÀ» pdf·Î º¯È¯Çϱâ À§Çؼ­´Â-
image·Î º¯È¯ ÈÄ, image¸¦ pdf·Î ´Ù½Ã º¯È¯½ÃÄÑ¾ß ÇÑ´Ù-

1.¸ÕÀú poi-scratchpad¿Í itextpdf°¡ ÇÊ¿äÇÏ´Ù-
´ÙÀ½À» pom.xml¿¡ Ãß°¡ÇØ ÁØ´Ù-

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<!-- ppt -->
<dependency>
	<groupid>org.apache.poi</groupid>
	<artifactid>poi-scratchpad</artifactid>
	<version>3.10-FINAL</version>
</dependency>

<!-- iText pdf -->
<dependency>
	<groupid>com.itextpdf</groupid>
	<artifactid>itextpdf</artifactid>
	<version>5.5.2</version>
</dependency>



2. PPTtoPDFConverter.java
ÀúÀåµÇ¾î ÀÖ´Â ppt ÆÄÀÏÀÇ °æ·Î¸¦ ÀÔ·ÂÇϸé-
pdf ÆÄÀÏ·Î º¯È¯ ÈÄ, pdfÆÄÀÏÀÇ °æ·Î¸¦ Ãâ·ÂÇÑ´Ù-

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;

import javax.imageio.ImageIO;

import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;

public class PPTtoPDFConverter {
	String realFolder = FileManager.realFolder;
	private String pdfFileName;
	
	public PPTtoPDFConverter(){
	}
	
	public PPTtoPDFConverter(String fileName){
		try {
			setPdfFileName(this.convert(fileName));
		} catch (IOException | DocumentException e) {
			e.printStackTrace();
		}
	}
	
	private void setPdfFileName(String pdfFileName) {
		this.pdfFileName = pdfFileName;		
	}
	
	public String getPdfFileName() {
		return pdfFileName;
	}

	private String convert(String fileName) throws IOException, DocumentException{
		//1.Read PPT file
		FileInputStream fis = new FileInputStream(realFolder + fileName);
		SlideShow ppt = new SlideShow(fis);
		
		fis.close();
		
		//2.Draw Image
		Dimension pageSize = ppt.getPageSize();
		Slide[] slide = ppt.getSlides();

		for(int i=0; i<slide.length; i++){
			BufferedImage image = new BufferedImage(pageSize.width, pageSize.height, BufferedImage.TYPE_INT_RGB);
			
			Graphics2D graphics = image.createGraphics();
			graphics.setPaint(Color.white); //À̹ÌÁö ¿µ¿ªÀ» Ŭ¸®¾î
			graphics.fill(new Rectangle2D.Float(0, 0, pageSize.width, pageSize.height));
			
			slide[i].draw(graphics);
			
			File dir = new File(realFolder + "tempImg/");
		    if (!dir.isDirectory()) {
		      dir.mkdirs();
		    }
		    
		    FileOutputStream fos = new FileOutputStream(dir + "temp" + (i+1) + ".png");
		    ImageIO.write(image, "png", fos);
		}
		
		//3.Image To PDF
		Document document = new Document();
		File dir = new File(realFolder + "portfolioPDF/");
		if (!dir.isDirectory()) {
			dir.mkdirs();
		}
	    
		String pdfFileName = "portfolioPDF/" + UUID.randomUUID().toString();
		PdfWriter.getInstance(document, new FileOutputStream(realFolder + pdfFileName));
		document.open();
		
		for(int i=1; i&lt;=slide.length; i++){
			String imagePath = realFolder + "tempImg/temp" + i + ".png";
			Image image = Image.getInstance(imagePath);
			document.add(image);
			
			//4.Delete Image
		    File file = new File(imagePath);
		    file.delete();
		}
		
		document.close();
		
		return pdfFileName;
	}	
}



Ãâó: http://casek.tistory.com/entry/ppt-to-imagepdf-º¯È¯ [Case K:]