现在的位置: 首页 > 综合 > 正文

java转换ppt,ppt转成图片 乱码问题解决

2013年10月13日 ⁄ 综合 ⁄ 共 2923字 ⁄ 字号 评论关闭
 

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

}

 

 

肯定知道-精品推荐:

1、一个土八路凭什么让冈村宁次都忌惮?

2、二战时期仅有的国军开坦克追日本兵,都压成肉酱了!!!

3、军事奇迹:看一书生7000人马横扫大半个中国的奇迹

4、国军悍将创造军事奇迹后为什么会投降日军?

5、国军战神曹锡,一人消灭日军一个大队!

6、flash无法覆盖的问题_三种办法可以解决flash覆盖其他元素

7、南海石油30年疯狂开采,到底还剩多少?

8、送礼国家也收税?莫不是都疯啦?

9、古代第一美女的悲惨结局

10、中国空军光棍节轰炸日本航母“龙骧”号

11、日本本土史上第一次空袭竟是中国轰炸机

12、中原大战中老将的王牌战将为何被害?

13、刷流量软件-免费刷流量工具-软件

14、免费刷流量-软件 

 

抱歉!评论已关闭.