java实现PPT转化为PDF
JACOB的方法,足可以解决这个问题,但是我既然以前曾经做过报表,就想尝试不同的方法。
JACOB是一座连接JAVA和微软的桥,所有的解析由微软解析。POI是没有微软解析的那么原汁原味的,所以如果要求高的话,还是使用JACOB。
大致思路很简单,将PPT先转化为图片,然后将图片写入PDF。转化图片是用POI,操作PDF使用ITEX。不过这个方法的BUG就是转化图片的POI效果不是很好。
导入的包分别是:itextpdf-5.1.3.jar,poi-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar。
然后贴代码了:
代码没有进行参数统一,写两个方法:
packagecom.zzk.cn; importjava.awt.Dimension; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.awt.Color; importjava.awt.Dimension; importjava.awt.Graphics2D; importjava.awt.geom.Rectangle2D; importjava.awt.image.BufferedImage; importorg.apache.poi.hslf.model.TextRun; importorg.apache.poi.hslf.record.Slide; importorg.apache.poi.hslf.usermodel.RichTextRun; importorg.apache.poi.hslf.usermodel.SlideShow; publicclassPPTtoImage{ publicstaticvoidmain(String[]args){ //读入PPT文件 Filefile=newFile("D:/书本JVM总结7-9.ppt"); doPPTtoImage(file); } publicstaticbooleandoPPTtoImage(Filefile){ booleanisppt=checkFile(file); if(!isppt){ System.out.println("你指定的文件不是ppt文档!"); returnfalse; } try{ FileInputStreamis=newFileInputStream(file); SlideShowppt=newSlideShow(is); is.close(); Dimensionpgsize=ppt.getPageSize(); org.apache.poi.hslf.model.Slide[]slide=ppt.getSlides(); for(inti=0;i第二段代码:
packagecom.zzk.cn; importjava.io.FileOutputStream; importjava.io.IOException; importcom.itextpdf.text.Document; importcom.itextpdf.text.DocumentException; importcom.itextpdf.text.Image; importcom.itextpdf.text.pdf.PdfWriter; publicclassImagetoPDF{ publicstaticvoidmain(String[]args){ System.out.println("Chapter6example3:usingarelativepathforHTML"); //step1:creationofadocument-object Documentdocument=newDocument(); try{ //step2: //wecreateawriterthatlistenstothedocument //anddirectsaPDF-streamtoafile PdfWriter.getInstance(document,newFileOutputStream("D:/测试图片.pdf")); //HtmlWriterwriter=HtmlWriter.getInstance(document,newFileOutputStream("Chap0603.html")); //writer.setImagepath("../../images/kerstmis/"); //step3:weopenthedocument document.open(); for(inti=1;i<=7;i++){ //step4:weaddcontent Imagejpg=Image.getInstance("D:/testImage/pict_"+i+".jpeg"); jpg.scalePercent(50); document.add(jpg); } } catch(DocumentExceptionde){ System.err.println(de.getMessage()); } catch(IOExceptionioe){ System.err.println(ioe.getMessage()); } //step5:weclosethedocument document.close(); } }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。