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();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。