解决方案 »

  1.   

    请问 POI 可以区分 PPT中标题或者正文的信息吗?我知道POI可以写PPT的标题内容,但是不知道 POI 中是否有方法读取标题的信息?
      

  2.   

    POI可以提取PPT中的文本信息。
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import org.apache.poi.hslf.HSLFSlideShow;
    import org.apache.poi.hslf.extractor.PowerPointExtractor;
    import org.apache.poi.hslf.model.Slide;
    import org.apache.poi.hslf.model.TextRun;
    import org.apache.poi.hslf.usermodel.SlideShow;
    public class PPT {
        //直接抽取幻灯片的全部内容
        public static String readDoc1(InputStream is) throws IOException{
            PowerPointExtractor extractor=new PowerPointExtractor(is);
            return extractor.getText();
        }    //一张幻灯片一张幻灯片地读取
        public static void readDoc2(InputStream is) throws IOException{
            SlideShow ss=new SlideShow(new HSLFSlideShow(is));
            Slide[] slides=ss.getSlides();
            for(int i=0;i<slides.length;i++){
                //读取一张幻灯片的标题
                String title=slides[i].getTitle();
                System.out.println("标题:"+title);
                //读取一张幻灯片的内容(包括标题)
                TextRun[] runs=slides[i].getTextRuns();
                for(int j=0;j<runs.length;j++){
                    System.out.println(runs[j].getText());
                }
            }
        }    public static void main(String[] args){
            File file = new File("/home/orisun/2.ppt");
            try{
                FileInputStream fin=new FileInputStream(file);
                String cont=readDoc1(fin);
                System.out.println(cont);
                fin.close();
                fin=new FileInputStream(file);
                readDoc2(fin);
                fin.close();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
      

  3.   

    谢谢各位,这个问题我已经解决了,用poi的确很方便。但是poi读取ppt 和 读取 pptx 方法不一样,请问怎么读取pptx的内容,并且也能提取出相应的 标题信息?