java實現附件預覽(openoffice+PDF.js)
阿新 • • 發佈:2019-02-14
java實現附件預覽(openoffice+PDF.js),將office文件,通過openoffice工具轉換為PDF檔案,使用PDF.js進行前端展示
現支援的轉換格式如下:
private static String[] docFileLayouts = {".txt",".doc",".docx",".wps",".xls",".xlsx",".et",".ppt",".pptx",".dps"};//office辦公軟體格式 private static String[] imgFileLayouts = {".jpg",".gif",".jpeg",".png",".bmp"};//圖片格式 private static String[] pdfFileLayouts = {".pdf"};//pdf格式
如有其它格式需要,可以對轉換格式進行擴充套件,
1、 安裝Apache_OpenOffice_4.1.2_Win_x86_install_en-US.exe,
下載連線:http://www.openoffice.org/download/index.html
2、 新增環境變數path=D:\Program Files (x86)\OpenOffice 4\program
3、 執行open_office_service.bat指令碼,並,檢視程序soffice是否執行
4、 Action新增方法
/** * .解析文章內容到PDF * @param request * @param modelMap * @param baseAddition */ private void initPDF(ServletWebRequest request,ModelMap modelMap, BaseAdditionbaseAddition) { Stringpath = ""; if("".equals(baseAddition.getExpandOne()) || baseAddition.getExpandOne()==null){ path= KAPath + baseAddition.getOperationId()+"/"+baseAddition.getAdditionId()+"/"; } // 呼叫轉換類DocConverter,並將需要轉換的檔案傳遞給該類的構造方法 DocConverterd = new DocConverter(baseAddition); // 呼叫conver方法開始轉換,先執行doc2pdf()將office檔案轉換為pdf;再執行pdf2swf()將pdf轉換為swf; d.conver(); // 呼叫getPdfPath()方法,列印轉換後的pdf檔案路徑 Stringpdfpath = request.getRequest().getContextPath()+path+d.getPdfName(); // 將相對路徑放入sessio中儲存 modelMap.put("pdfPath", pdfpath); }
4、前端jsp,PDF載入展示
<!--內容-->
<div class="mim_content">
<iframe width="100%"height="700px" src="<%=basePath %>js/pdf/web/viewer.html?file=${pdfPath}"></iframe>
</div>
注:${pdfPath},
a.PDF檔案路徑必須為專案路徑
b.檔名稱不能包含中文s
5、切換到演示模式,由於使用iframe引入pdf頁,全屏模式無法使用,具體原因可問度娘,這裡只給出全屏顯示思路。編輯viewer.js:
a.將全屏按扭顯示
/*if (!PDFView.supportsFullscreen) {
document.getElementById('presentationMode').classList.add('hidden');
document.getElementById('secondaryPresentationMode').
classList.add('hidden');
}*/
b.更改按扭點選事件為自定義處理
request: function presentationModeRequest() {
//引用knowledgeLuceneDetail.jsp
if(parent.document.IsFullScreen==null || !parent.document.IsFullScreen){
parent.launchFullscreen();
}else{
parent.exitFullscreen();
}
return true;
}
c.函式可以隱藏不相關div,可以全屏顯示,這裡使用提隱藏div
var docHtml = document.documentElement;
var docBody = document.body;
var videobox = document.getElementById('content');
var mi_main_div = $("#mi_main_div");
var module_info_div = $("#module_info_div");
var module_info_2_div = $("#module_info_2_div");
//進入全屏
function launchFullscreen() {
var cssText = 'width:100%;height:100%;overflow:hidden;';
mi_main_div.hide();
module_info_2_div.hide();
docHtml.style.cssText = cssText;
docBody.style.cssText = cssText;
videobox.style.cssText = cssText + ';' + 'margin:0px;padding:0px;';
module_info_div.removeClass('module_info');
document.IsFullScreen = true;
}
//退出全屏
function exitFullscreen() {
mi_main_div.show();
module_info_2_div.show();
docHtml.style.cssText = "";
docBody.style.cssText = "";
videobox.style.cssText = "";
module_info_div.addClass('module_info');
document.IsFullScreen = false;
}
js、java程式碼,有一些垃圾程式碼,大家請見量,有覺得不爽的地方,可以自己優化。