java实现在线预览doc,txt,ppt,xls等文档,用到了libreOffice,openOffice,SWFTools,JODConverter,flexPaper

涉及到的图片请看附件。

libreOffice转换的代码:

public String doDocToFdpLibre() {

// File inputFile = new File("d:/1.txt");
// File inputFile = new File("d:/ppt.ppt");
// File inputFile = new File("d:/pptx.pptx");
// File inputFile = new File("d:/doc.doc");
// File inputFile = new File("d:/docx.docx");
// File inputFile = new File("d:/xls.xls");
File inputFile = new File("d:/jpg.jpg");
// File inputFile = new File("d:/gif.gif");
System.out.println("libreOffice
开始转换..............................");
Long startTime = new Date().getTime();
// 
// txt:
使用libreOffice来转换pdf,转换成功,但是中文有乱码!!!!!
// doc:
这是office中的doc文档,可以转换成功,并且中文没有乱码
//docx:
这是office中的docx文档,可以转换成功,并且中文没有乱码
//ppt
pptx:转换成功。
//xls:
转换成功,没有中文乱码
//xlsx
:转换成功
//jpg
png:成功
String libreOfficePath = "D:/Program Files (x86)/LibreOffice 4";
//
此类在jodconverter3版本中存在,在2.2.2版本中不存在
DefaultOfficeManagerConfiguration configuration = newDefaultOfficeManagerConfiguration();
// libreOffice
的安装目录
configuration.setOfficeHome(new File(libreOfficePath));
//
端口号
configuration.setPortNumber(8100);
// configuration.setTaskExecutionTimeout(1000 * 60 * 5L);//
//
设置任务执行超时为5分钟
// configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);//
//
设置任务队列超时为24小时
OfficeManager officeManager = configuration.buildOfficeManager();
officeManager.start();
System.out.println("...start.....");
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
File outputFile = new File("d:/jpgLibre.pdf");
converter.convert(inputFile, outputFile);
// converter.convert(inputFile, stw, outputFile, pdf); 
//
转换结束
System.out.println("
转换结束。。。。。");
String pdfPath = outputFile.getPath();
long endTime = new Date().getTime();
long time = endTime - startTime;
System.out.println("libreOffice
转换所用时间为:"+time);
return pdfPath;
}

 

openOffice转换的代码:

public String doDocToFdpOpen() {
// File inputFile = new File("d://unicode.txt");
// File inputFile = new File("d:/pptx.pptx");
// File inputFile = new File("d:/ppt.ppt");
// File inputFile = new File("d:/docx.docx");
// File inputFile = new File("d:/doc.doc");
// File inputFile = new File("d:/xlsx.xlsx");
// File inputFile = new File("d:/jpg.jpg");
File inputFile = new File("d:/gif.gif");
System.out
.println("openOffice
开始转换....................................");
// txt:
使用openoffice来转换pdf,转换成功,但有乱码!!!!!
//
原因是编码格式不统一,如果源文件是utf-8的文件的话,就不会有乱码
//doc
docx,xls,xlsx:转换成功,没有乱码
//!!!!!jpg,png,gif
无法转换
//ppt.pptx
可以转换

long startTime = new Date().getTime();
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
connection.connect();
} catch (ConnectException e) {
e.printStackTrace();
}
DocumentConverter converter = new OpenOfficeDocumentConverter(
connection);
File outputFile = new File("d:/gifOpen.pdf");
converter.convert(inputFile, outputFile);
connection.disconnect();
String pdfPath = outputFile.getPath();
long endTime = new Date().getTime();
long time = endTime - startTime;
System.out.println("openOffice
所用时间为:"+time);
return pdfPath;
}

 

pdf格式转为swf格式的代码:

public void doPdfToSwf(String pdfPath){
Runtime r = Runtime.getRuntime(); 
System.out.println("pdfPath:"+pdfPath);
String swfPath = pdfPath.substring(0,pdfPath.lastIndexOf('.'));
System.out.println("D:/Program Files (x86)/SWFTools/pdf2swf.exe -t"+pdfPath+" -s flashversion=9 -o "+swfPath+".swf");
try {
Process p = r.exec("D:/Program Files (x86)/SWFTools/pdf2swf.exe -t"+pdfPath+" -s flashversion=9 -o "+swfPath+".swf");

} catch (IOException e) {
e.printStackTrace();

}

 

新建web项目

flexpaper中的js文件拷到项目如图所示的位置,然后创建html文件,代码如下:

 
 
 
FlexPaper 
 
 


 
 






 

注意

填写好生成的swf文件的地址

运行html文件

如果出现如图所示的加载状态,请点击这个链接:http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065

选择左边第三项,然后将刚才新建html文件的地址加到右下方的位置,选择始终允许。

然后再次运行html文件,将会在线正确显示swf文件。


 

你可能感兴趣的:(java编程)