java转换ppt,ppt转成图片 乱码问题解决
2011-07-11 11:01
447 查看
java转换ppt,ppt转成图片,ppt转成flash,乱码问题解决
想了很久,本来是想找一个flash文档阅读器,但是没有找到,后来我想。把ppt转换成图片,然后在放入flash 或者网页就可以了。 去网上搜了一段代码ppt转换成图片,但是图片出现乱码,后来我把文字类型设置为 宋体 就可以了。刚刚解决问题,就拿出来给大家分享了。
关键代码就是: rtruns[l].setFontName("宋体");
import java.awt.Dimension;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.record.Slide;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
public class PPTtoImage {
public static void main(String[] args) {
// 读入PPT文件
File file = new File("F:/20110618.ppt");
doPPTtoImage(file);
}
public static boolean doPPTtoImage(File file) {
boolean isppt = checkFile(file);
if (!isppt) {
System.out.println("The image you specify don't exit!");
return false;
}
try {
FileInputStream is = new FileInputStream(file);
SlideShow ppt = new SlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
System.out.print("第" + i + "页。");
TextRun[] truns = slide[i].getTextRuns();
for (int k = 0; k < truns.length; k++) {
RichTextRun[] rtruns = truns[k].getRichTextRuns();
for (int l = 0; l < rtruns.length; l++) {
int index = rtruns[l].getFontIndex();
String name = rtruns[l].getFontName();
rtruns[l].setFontIndex(1);
rtruns[l].setFontName("宋体");
System.out.println(rtruns[l].getText());
}
}
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);
// 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
FileOutputStream out = new FileOutputStream("F:/test/pict_"
+ (i + 1) + ".jpeg");
javax.imageio.ImageIO.write(img, "jpeg", out);
out.close();
}
System.out.println("success!!");
return true;
} catch (FileNotFoundException e) {
System.out.println(e);
// System.out.println("Can't find the image!");
} catch (IOException e) {
}
return false;
}
// function 检查文件是否为PPT
public static boolean checkFile(File file) {
boolean isppt = false;
String filename = file.getName();
String suffixname = null;
if (filename != null && filename.indexOf(".") != -1) {
suffixname = filename.substring(filename.indexOf("."));
if (suffixname.equals(".ppt")) {
isppt = true;
}
return isppt;
} else {
return isppt;
}
}
}
想了很久,本来是想找一个flash文档阅读器,但是没有找到,后来我想。把ppt转换成图片,然后在放入flash 或者网页就可以了。 去网上搜了一段代码ppt转换成图片,但是图片出现乱码,后来我把文字类型设置为 宋体 就可以了。刚刚解决问题,就拿出来给大家分享了。
关键代码就是: rtruns[l].setFontName("宋体");
import java.awt.Dimension;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.record.Slide;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
public class PPTtoImage {
public static void main(String[] args) {
// 读入PPT文件
File file = new File("F:/20110618.ppt");
doPPTtoImage(file);
}
public static boolean doPPTtoImage(File file) {
boolean isppt = checkFile(file);
if (!isppt) {
System.out.println("The image you specify don't exit!");
return false;
}
try {
FileInputStream is = new FileInputStream(file);
SlideShow ppt = new SlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
System.out.print("第" + i + "页。");
TextRun[] truns = slide[i].getTextRuns();
for (int k = 0; k < truns.length; k++) {
RichTextRun[] rtruns = truns[k].getRichTextRuns();
for (int l = 0; l < rtruns.length; l++) {
int index = rtruns[l].getFontIndex();
String name = rtruns[l].getFontName();
rtruns[l].setFontIndex(1);
rtruns[l].setFontName("宋体");
System.out.println(rtruns[l].getText());
}
}
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);
// 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
FileOutputStream out = new FileOutputStream("F:/test/pict_"
+ (i + 1) + ".jpeg");
javax.imageio.ImageIO.write(img, "jpeg", out);
out.close();
}
System.out.println("success!!");
return true;
} catch (FileNotFoundException e) {
System.out.println(e);
// System.out.println("Can't find the image!");
} catch (IOException e) {
}
return false;
}
// function 检查文件是否为PPT
public static boolean checkFile(File file) {
boolean isppt = false;
String filename = file.getName();
String suffixname = null;
if (filename != null && filename.indexOf(".") != -1) {
suffixname = filename.substring(filename.indexOf("."));
if (suffixname.equals(".ppt")) {
isppt = true;
}
return isppt;
} else {
return isppt;
}
}
}
肯定知道-精品推荐: 1、一个土八路凭什么让冈村宁次都忌惮? 2、二战时期仅有的国军开坦克追日本兵,都压成肉酱了!!! 3、军事奇迹:看一书生7000人马横扫大半个中国的奇迹 4、国军悍将创造军事奇迹后为什么会投降日军? 5、国军战神曹锡,一人消灭日军一个大队! 6、flash无法覆盖的问题_三种办法可以解决flash覆盖其他元素 7、南海石油30年疯狂开采,到底还剩多少? 8、送礼国家也收税?莫不是都疯啦? 9、古代第一美女的悲惨结局 10、中国空军光棍节轰炸日本航母“龙骧”号 11、日本本土史上第一次空袭竟是中国轰炸机 12、中原大战中老将的王牌战将为何被害? 13、刷流量软件-免费刷流量工具-软件 14、免费刷流量-软件
相关文章推荐
- java转换ppt,ppt转成图片 乱码问题解决
- java转换ppt,ppt转成图片 乱码问题解决
- java转换ppt,ppt转成图片 乱码问题解决
- java转换ppt,ppt转成图片 乱码问题解决
- java转换ppt,ppt转成图片 乱码问题解决
- 将java的集合转换为数据库集合类型 解决weblogic调用存储过程的时候,返回值乱码问题
- 关于java串口通信 接受显示 乱码的字符转换问题解决方案
- Ubuntu/Debian下JAVA 中文/图片中文字体乱码显示问题解决方法
- Ubuntu/Debian下JAVA 中文/图片中文字体乱码显示问题解决方法
- Ubuntu/Debian下JAVA 中文/图片中文字体乱码显示问题解决方法
- 解决Linux下Java控制台中文乱码问题
- Java解决通信过程的中文乱码的问题
- java 输入输出流将jsp文件生成html,解决乱码问题
- 解决ActiveMQ中,Java与C++交互中文乱码问题
- Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)
- java中读取excel文件中字符串乱码问题解决方法
- java传参、jsp乱码问题的一些解决办法
- java 和 C++ Socket通信(java作为服务端server,C++作为客户端client,解决中文乱码问题GBK和UTF8)
- Java 实现Ftp乱码问题解决
- Java乱码问题解决方法