java 仿百度文库源码_Java模拟实现百度文档在线浏览
Java模擬實(shí)現(xiàn)百度文檔在線瀏覽
這個(gè)思路是我參考網(wǎng)上而來,代碼是我實(shí)現(xiàn)。
采用Apache下面的OpenOffice將資源文件轉(zhuǎn)化為pdf文件,然后將pdf文件轉(zhuǎn)化為swf文件,用FlexPaper瀏覽。
ok,
A、下載OpenOffice (轉(zhuǎn)換資源文件)
B、下載JodConverter(調(diào)用OpenOffice)
C、下載Swftools(Pdf2Swf)
D、下載 FlexPaper(瀏覽swf文件)
下載之后,先別急安裝,請(qǐng)看完這篇博文
1、先看我們的MyEclipse工程結(jié)構(gòu)
2、
將我們下載下來的
?解壓之后將所有的?jar?文件拷貝到?baiduDoc?的?lib?下面去
3、???在?WebRoot?下面新建
?文件夾,將解壓后的?
?全部拷貝到?FlexPaper中去
4、?新建BaiDuServlet.java文件package?com.baidu.util;import?java.io.BufferedInputStream;import?java.io.File;import?java.io.FileInputStream;import?java.io.IOException;import?java.io.InputStream;import?java.net.ConnectException;import?javax.p_w_picpathio.stream.FileImageInputStream;import?javax.servlet.ServletException;import?javax.servlet.http.HttpServlet;import?javax.servlet.http.HttpServletRequest;import?javax.servlet.http.HttpServletResponse;import?com.artofsolving.jodconverter.DocumentConverter;import?com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;import?com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;import?com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;/**
*?@Author:NuoYan
*?@Date:2015-2-2?下午2:24:58
*?TODO:?1、第一步,首先獲取到需要查看的文件
*???????2、第二部,將獲取的文件(doc,xls,txt,ppt,03/07版本轉(zhuǎn)化為PDF),這一步需要調(diào)用OpenOffice
*???????3、第三部,將資源文件轉(zhuǎn)換好的PDF文件轉(zhuǎn)換為swf文件,使用FlexPaperViewer.swf進(jìn)行瀏覽查看
*/public?class?BaiDuServlet?extends?HttpServlet?{??private?File?sourceFile;//?要轉(zhuǎn)化的源文件??private?File?pdfFile;//?pdf中間文件對(duì)象??private?File?swfFile;//?swf目標(biāo)文件對(duì)象??private?String?filePath;//?用來保存文件路徑??private?String?fileName;//?不包括后綴名的文件名??public?File?getSourceFile()?{????return?sourceFile;??}??public?void?setSourceFile(File?sourceFile)?{????this.sourceFile?=?sourceFile;??}??public?File?getPdfFile()?{????return?pdfFile;??}??public?void?setPdfFile(File?pdfFile)?{????this.pdfFile?=?pdfFile;??}??public?File?getSwfFile()?{????return?swfFile;??}??public?void?setSwfFile(File?swfFile)?{????this.swfFile?=?swfFile;??}??public?String?getFilePath()?{????return?filePath;??}??public?void?setFilePath(String?filePath)?{????this.filePath?=?filePath;??}??public?String?getFileName()?{????return?fileName;??}??public?void?setFileName(String?fileName)?{????this.fileName?=?fileName;??}??public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)??????throws?ServletException,?IOException?{????String?saveFileName?=?request.getParameter("savFile");????System.out.println(saveFileName);????String?webPath?=?request.getRealPath("/");????filePath?=?webPath?+?"reader\\"?+?saveFileName;????fileName?=?filePath.substring(0,?filePath.lastIndexOf("."));????//?創(chuàng)建三個(gè)文件對(duì)象????sourceFile?=?new?File(filePath);????pdfFile?=?new?File(fileName?+?".pdf");????swfFile?=?new?File(fileName?+?".swf");????System.out.println(pdfFile);????System.out.println(swfFile);????//?1、將源文件轉(zhuǎn)化為pdf格式文件????src2pdf();????try?{??????//?2、將pdf文件轉(zhuǎn)化為swf文件??????pdf2swf();????}?catch?(Exception?e)?{??????e.printStackTrace();????}????//?將轉(zhuǎn)化好的文件綁定到session上去????request.getSession().setAttribute("swfName",?swfFile.getName());????System.out.println(swfFile.getName());????//?重定向到預(yù)覽頁面????response.sendRedirect(request.getContextPath()?+?"/reader/baseFile.jsp");??}??/**???*?@Author:NuoYan???*?@Date:2015-2-2?下午2:28:22?TODO://源文件轉(zhuǎn)化為PDF文件???*/??private?void?src2pdf()?{????if?(sourceFile.exists())?{??????//?如果不存在,需要轉(zhuǎn)份為PDF文件??????if?(!pdfFile.exists())?{????????//?啟用OpenOffice提供的轉(zhuǎn)化服務(wù)????????OpenOfficeConnection?conn?=?new?SocketOpenOfficeConnection(8100);????????//?連接OpenOffice服務(wù)器????????try?{??????????conn.connect();??????????//?建立文件轉(zhuǎn)換器對(duì)象??????????DocumentConverter?converter?=?new?OpenOfficeDocumentConverter(??????????????conn);??????????converter.convert(sourceFile,?pdfFile);??????????//?斷開鏈接??????????conn.disconnect();??????????System.out.println("轉(zhuǎn)換成功");????????}?catch?(ConnectException?e)?{??????????e.printStackTrace();????????}??????}?else?{????????System.out.println("已經(jīng)存在PDF文件,不需要在轉(zhuǎn)換!!");??????}????}?else?{??????System.out.println("文件路徑不存在!!!");????}??}??/**???*?@Author:NuoYan???*?@Date:2015-2-2?下午2:28:32???*?@throws?Exception???*?TODO:PDF轉(zhuǎn)化為SWF文件???*/??private?void?pdf2swf()?throws?Exception?{????if?(!swfFile.exists())?{??????if?(pdfFile.exists())?{????????String?command?=?"C:\\Pdf2swf\\pdf2swf.exe?"????????????+?pdfFile.getPath()?+?"?-o?"?+?swfFile.getPath()????????????+?"?-T?9";????????System.out.println("轉(zhuǎn)換命令:"?+?command);????????//?Java調(diào)用外部命令,執(zhí)行pdf轉(zhuǎn)化為swf????????Runtime?r?=?Runtime.getRuntime();????????Process?p?=?r.exec(command);????????System.out.println(loadStream(p.getInputStream()));????????System.out.println("swf文件轉(zhuǎn)份成功!!!");????????System.out.println(swfFile.getPath());??????}?else?{????????System.out.println("不存在PDF文件");??????}????}??}????private?static?String?loadStream(InputStream?in)?throws?Exception?{????int?len?=?0;????in?=?new?BufferedInputStream(in);????StringBuffer?buffer?=?new?StringBuffer();????while?((len?=?in.read())?!=?-1)?{??????buffer.append((char)?len);????}????return?buffer.toString();??}
}
5、?修改index.jspHTML?PUBLIC"-//W3C//DTD?HTML?4.01?Transitional//EN">??
????百度文庫在線預(yù)覽?????????/BaiDuServlet?savFile=1234.xls">在線預(yù)覽??6、?編寫baseFile.jsp文件html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">
在線閱讀注意baseFile.jsp中的代碼,不會(huì)你可以參考這里
/**************************************************************************************/
7、?到這里就完成,需要注意的是:
1、
?文件安裝路徑不要太深,不然?Java?調(diào)用外部命令不能執(zhí)行,我這里是?C盤下
2、
2.1、紅色1標(biāo)記路徑不能錯(cuò),我就犯這個(gè)錯(cuò)誤了
3、?啟動(dòng)OpenOffice的命令,不是直接雙擊啟動(dòng)的。官網(wǎng)啟動(dòng)方式,使用cd命令打開安裝目錄!
安裝完openoffice后
1.安裝服務(wù)
cd C:\Program Files (x86)\OpenOffice4\program
這一步你可以看你的OpenOffice安裝哪里
執(zhí)行
soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
2.查看是否安裝成功
2.1查看端口對(duì)應(yīng)的pid
netstat -ano|findstr "8100"
2.2查看pid對(duì)應(yīng)的服務(wù)程序名
tasklist|findstr "ipd值"
效果圖示:
源碼地址:
有問題留言,來找我吧!
總結(jié)
以上是生活随笔為你收集整理的java 仿百度文库源码_Java模拟实现百度文档在线浏览的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通讯录管理系统JAVA版本
- 下一篇: latex 分布符号_latex符号大全