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<=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;
}
}
|