请教一个问题:将PPT转换成图片的时候,图片的确出来了,但是图片的内容有部分确实,这个问题谁知道,代码贴上。
如果各位有其他的ppt转换成图片的方法,也可以告诉我。我是在网上抄录的一段代码,使用的是apach的poi。
代码贴上,各位看看有什么问题

解决方案 »

  1.   

    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.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;import org.apache.poi.hslf.HSLFSlideShow;
    import org.apache.poi.hslf.model.TextRun;
    import org.apache.poi.hslf.usermodel.RichTextRun;
    import org.apache.poi.hslf.usermodel.SlideShow;public class TestPpt {
    public static void main(String[] args) {
    // 读入PPT文件
    File file = new File("d:/cc/ss_20120719.ppt");
    doPPTtoImage(file);
    } public static boolean doPPTtoImage(File file) {
    boolean isppt = checkFile(file);
    if (!isppt) {
    System.out.println("你指定的文件不是ppt文档!");
    return false;
    }
    try { HSLFSlideShow hslfSlideShow = new HSLFSlideShow("d:/cc/ss_20120719.ppt");
    SlideShow ppt = new SlideShow(hslfSlideShow);
    Dimension pgsize = ppt.getPageSize();
    org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
    for (int i = 0; i < slide.length; i++) {
    if (slide[i].getNotesSheet() != null
    && slide[i].getNotesSheet().getTextRuns() != null) {
    // 获取第一个备注
    System.out.println("备注:"
    + slide[i].getNotesSheet().getTextRuns()[0]
    .getText());
    }
    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++) {
    rtruns[l].setFontName("MS Pゴシック");
    // 获取文本列表
    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("d:/cc/pict_"
    + (i + 1) + ".bmp");
    javax.imageio.ImageIO.write(img, "bmp", out);
    out.close();
    }
    System.out.println("ok");
    return true;
    } catch (FileNotFoundException e) {
    System.out.println(e);
    } catch (IOException e) {
    e.printStackTrace();
    }
    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;
    }
    }
    }