package
t03;
import
java.awt.BorderLayout;
import
java.awt.Color;
import
java.awt.Dimension;
import
java.awt.Graphics;
import
java.awt.Graphics2D;
import
java.awt.GridLayout;
import
java.awt.Image;
import
java.awt.Toolkit;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.awt.geom.Rectangle2D;
import
java.awt.image.BufferedImage;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
javax.swing.ImageIcon;
import
javax.swing.JButton;
import
javax.swing.JFileChooser;
import
javax.swing.JFrame;
import
javax.swing.JPanel;
import
org.apache.poi.hslf.record.Slide;
import
org.apache.poi.hslf.usermodel.SlideShow;
import
java.io.IOException;
/**
* 许晏宁
* @author hp
* 2014/5/10
* 这是一个关于导入PPT转为图片,并显示在窗体中的程序
*/
public
class
InsertPpt
implements
ActionListener{
JFrame jFrame=
new
JFrame(
"PPT"
);
Myjpanel jPanel1=
new
Myjpanel();
//新建myjpanel型的jpanel,这样就可以在panel上显示图片
JPanel jPanel2=
new
JPanel();
JButton jbutton1 =
new
JButton(
"导入文件"
);
JButton jbutton2 =
new
JButton(
"首页"
);
JButton jbutton3 =
new
JButton(
"上一页"
);
JButton jbutton4 =
new
JButton(
"下一页"
);
JButton jbutton5 =
new
JButton(
"末页"
);
JFileChooser fChooser=
new
JFileChooser();
File file1;
int
j=
0
;
int
l;
public
static
void
main(String[] args) {
// TODO Auto-generated method stub
InsertPpt ppt=
new
InsertPpt();
ppt.go();
}
class
Myjpanel
extends
JPanel{
//添加图片,并传入图片名称
String address=
new
String();
public
void
setAddress(String ad){
this
.address=ad;
}
protected
void
paintComponent(Graphics g){
Image image=
new
ImageIcon(address).getImage();
g.drawImage(image,
3
,
4
,
this
);
}
}
public
void
go() {
//构建窗体及布局
jFrame.setSize(
750
,
605
);
jFrame.setVisible(
true
);
jFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
jFrame.getContentPane().add(BorderLayout.CENTER,jPanel1);
jFrame.getContentPane().add(BorderLayout.SOUTH,jPanel2);
jPanel2.setLayout(
new
GridLayout(
1
,
5
));
jPanel2.add(jbutton1);
jPanel2.add(jbutton2);
jPanel2.add(jbutton3);
jPanel2.add(jbutton4);
jPanel2.add(jbutton5);
jbutton1.addActionListener(
this
);
jbutton2.addActionListener(
this
);
jbutton3.addActionListener(
this
);
jbutton4.addActionListener(
this
);
jbutton5.addActionListener(
this
);
}
public
void
actionPerformed(ActionEvent event){
//导入文件,并将ppt类型的文件转为图片,并存入工作环境
if
(event.getActionCommand()==
"导入文件"
) {
if
(fChooser.showOpenDialog(
null
)==JFileChooser.APPROVE_OPTION){
file1=fChooser.getSelectedFile();
}
//xiaoif
FileInputStream is =
null
;
try
{
is =
new
FileInputStream(file1);
}
catch
(FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SlideShow ppt =
null
;
try
{
ppt =
new
SlideShow(is);
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
is.close();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Dimension pgsize = ppt.getPageSize();
org.apache.poi.hslf.model.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);
l++;
//save the output
FileOutputStream out =
null
;
try
{
out =
new
FileOutputStream(
"slide-"
+ (i+
1
) +
".png"
);
javax.imageio.ImageIO.write(img,
"png"
, out);
out.close();
}
catch
(FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
jPanel1.setAddress(
"slide-1.png"
);
jPanel1.repaint();
}
//if
else
if
(event.getActionCommand()==
"首页"
) {
//显示图片,建立监听器
jPanel1.setAddress(
"slide-1.png"
);
jPanel1.repaint();
j=
1
;
}
else
if
(event.getActionCommand()==
"上一页"
) {
if
(j==
1
) {
Toolkit.getDefaultToolkit().beep();
//已经是第一张时,再点击上一页,会发出警报声
}
else
{
j--;
jPanel1.setAddress(
"slide-"
+j+
".png"
);
jPanel1.repaint();
}
}
else
if
(event.getActionCommand()==
"下一页"
) {
if
(j==l) {
Toolkit.getDefaultToolkit().beep();
//已经是最后一张时,再点击下一页,会发出警报声
}
else
{
j++;
jPanel1.setAddress(
"slide-"
+j+
".png"
);
jPanel1.repaint();
}
}
else
if
(event.getActionCommand()==
"末页"
) {
j=l;
jPanel1.setAddress(
"slide-"
+j+
".png"
);
jPanel1.repaint();
}
}
//jianting
}