1. 程式人生 > >java實現附件預覽(openoffice+PDF.js)

java實現附件預覽(openoffice+PDF.js)

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程式碼,有一些垃圾程式碼,大家請見量,有覺得不爽的地方,可以自己優化。