Apache POI将PPT转换成图片实例代码
本文主要分享的是关于ApachePOI将PPT转换成图片的相关内容,简单介绍了ApachePOI,具体内容如下。
1、ApachePOI简介
ApachePOI是用Java编写的免费开源的跨平台的JavaAPI,ApachePOI提供API给Java程式对MicrosoftOffice格式档案读和写的功能。
可以查看官方文档ApachePOI官网
ApachePOI操作PPT文档有两种方式:
2.POI-XSLF对应的PowerPoint2007OOXML的文件格式–后缀名为.pptx
2、JAR包
POI操作office需要的jar包:
poi-3.12.jar poi-ooxml-3.12.jar poi-ooxml-schemas-3.12.jar poi-scratchpad-3.12.jar xmlbeans-2.6.0.jar
maven方式引入:
maven方式只需要引入两个就可以,因为他们依赖了其他几个
org.apache.poi poi-ooxml 3.12 org.apache.poi poi-scratchpad 3.12
3、POI-HSLF方式
POI-HSLF方式处理PPT以.ppt后缀结尾的文档。
/** *ppt2003文档的转换后缀名为.ppt *@parampptFileppt文件 *@paramimgFile图片将要保存的目录(不是文件) *@return */ publicstaticBooleandoPPT2003toImage(FilepptFile,FileimgFile,Listlist){ try{ FileInputStreamis=newFileInputStream(pptFile); SlideShowppt=newSlideShow(is); //及时关闭掉输入流 is.close(); Dimensionpgsize=ppt.getPageSize(); Slide[]slide=ppt.getSlides(); for(inti=0;i 4、POI-XSLF方式
POI-XSLF方式处理PPT文件以.pptx后缀结尾的文档。
/** *ppt2007文档的转换后缀为.pptx *@parampptFilePPT文件 *@paramimgFile图片将要保存的路径目录(不是文件) *@paramlist存放文件名的list *@return */ publicstaticBooleandoPPT2007toImage(FilepptFile,FileimgFile,Listlist){ FileInputStreamis=null; try{ is=newFileInputStream(pptFile); XMLSlideShowxmlSlideShow=newXMLSlideShow(is); is.close(); //获取大小 Dimensionpgsize=xmlSlideShow.getPageSize(); //获取幻灯片 XSLFSlide[]slides=xmlSlideShow.getSlides(); for(inti=0;i textParagraphs=sh.getTextParagraphs(); for(XSLFTextParagraphxslfTextParagraph:textParagraphs){ List textRuns=xslfTextParagraph.getTextRuns(); for(XSLFTextRunxslfTextRun:textRuns){ xslfTextRun.setFontFamily("宋体"); } } } } //根据幻灯片大小生成图片 BufferedImageimg=newBufferedImage(pgsize.width,pgsize.height,BufferedImage.TYPE_INT_RGB); Graphics2Dgraphics=img.createGraphics(); graphics.setPaint(Color.white); graphics.fill(newRectangle2D.float(0,0,pgsize.width,pgsize.height)); //最核心的代码 slides[i].draw(graphics); //图片将要存放的路径 StringabsolutePath=imgFile.getAbsolutePath()+"/"+(i+1)+".jpeg"; FilejpegFile=newFile(absolutePath); //图片路径存放 list.add((i+1)+".jpeg"); //如果图片存在,则不再生成 if(jpegFile.exists()){ continue; } //这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径 FileOutputStreamout=newFileOutputStream(jpegFile); //写入到图片中去 ImageIO.write(img,"jpeg",out); out.close(); } log.error("PPT转换成图片成功!"); returntrue; } catch(Exceptione){ log.error("PPT转换成图片发生异常!",e); } returnfalse; } 5、可能出现的错误
org.apache.poi.poifs.filesystem.OfficeXmlFileException:ThesupplieddataappearstobeintheOffice2007+XML.YouarecallingthepartofPOIthatdealswithOLE2OfficeDocuments.YouneedtocalladifferentpartofPOItoprocessthisdata(egXSSFinsteadofHSSF)出现以上错误,说明是没有对应起来使用,应该使用第二种方式来转换PPT。
有时候核心转换的时候很容易出问题,是因为POI没有做得很好,图片有时候容易失真。
//最核心的代码 slides[i].draw(graphics);总结
以上就是本文关于ApachePOI将PPT转换成图片实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!