纸质办公电子化——iWebOffice中间件
前言
?? 這兩天在公司使用了一個金格的辦公的中間件產(chǎn)品——iWebOffice,感覺挺好用的,這次主要是使用它來實現(xiàn)套打功能。
?
正題
?? 由于使用web頁面打印調(diào)試位置比較麻煩,而且不同的瀏覽器要使用不同的打印機,所以我們這次的解決方案是使用iWebOffice組件在實現(xiàn)在web中嵌入word,通過書簽讀取數(shù)據(jù)庫內(nèi)容,然后使用word的打印功能(避免了不同瀏覽器選擇不同打印機的弊端),同時我們只需根據(jù)具體的模版來調(diào)整word的位置(難度降級,不需要去調(diào)試jsp頁面)。
?
?? 我們大家先來看下這個中間件如何使用,下面我通過一個小實例來跟大家展示一下:
1.準(zhǔn)備工作:
?? 我們需要用到的有:
???1)一個DBstep.jar包和一個驅(qū)動jar(我用的是ojdbc.jar,這兩個jar包是必須的)。
???2)一個iweboffice2006.cab(iWebOffice插件,瀏覽器若想顯示該插件內(nèi)容就必須安裝該插件)
?? 3)一個DocumentEditjsp頁面用于嵌入該插件,顯示word內(nèi)容。(必須)
?? 4)一個iWebOffice.java(加載文件等對iWebOffice的操作,必須)
?? 5)一個OfficeServer.java(一個servlet,調(diào)用iWebOffice方法)
?? 6)一個iDBManager2000.java(配置數(shù)據(jù)庫的連接)
?? 7)當(dāng)然還有一個.doc文件。
?? 8)當(dāng)然這些準(zhǔn)備足以用來在web頁面顯示一個word文檔,但是由于我要對word設(shè)置書簽,所以又新添了一個GetBookMarkInfo.java(一個servlet,用來獲取書簽值)。
?
2.工作流程:
?? 我們簡單看一下我這個小demo的工作流程:
?
3.創(chuàng)建項目
?? 我們創(chuàng)建一個web項目,具體的其他需要的類和jar包參考準(zhǔn)備工作,看一下創(chuàng)建完后的結(jié)構(gòu):
?
4.編寫代碼
?? 我們需要手動改動的地方就是web.xml,GetBookMarkInfo和DocumentEdit.jsp頁面,其他的不需要更改。
?? GetBookMarkInfo.java:
??
package hz;import java.io.IOException;import java.util.Map;import java.util.TreeMap;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class GetBookMarkInfo extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{Map<String, Object> data = new TreeMap<String, Object>();//給書簽賦值,我這里使用的是手動賦值data.put("title", "測試iWebOffice");data.put("content", "信息技術(shù)提高班");request.getSession().setAttribute("entity", data); //獲取絕對路徑String mServerUrl="http://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/hz/DocumentEdit.jsp";//lcid為word文檔的名字response.sendRedirect(mServerUrl+"?lcid=demo");}}
?
???
?? DocumentEdit.jsp:(紅色部分是需要改動的)
<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <% String mServerName="OfficeServerServlet";String mServerHost="http://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";String mServerUrl=mServerHost+mServerName;//取得OfficeServer文件的完整URLString lcid=request.getParameter("lcid");//獲取標(biāo)簽內(nèi)容Map<String, Object> zzsh= (Map<String, Object>)request.getSession().getAttribute("entity"); %> <html> <head> <title>測試iWebOffice</title> <link rel='stylesheet' type='text/css' href='test.css'> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script language="javascript" for=WebOffice event="OnMenuClick(vIndex,vCaption)">if (vIndex==1){ WebOpenLocal(); //打開本地文件}if (vIndex==2){ WebSaveLocal(); //保存本地文件}if (vIndex==3){SaveDocument(); //保存正文到服務(wù)器上(不退出)}if (vIndex==5){ WebOpenSignature(); //簽名印章}if (vIndex==6){ WebShowSignature(); //驗證簽章}if (vIndex==8){ WebSaveVersion(); //保存版本}if (vIndex==9){ WebOpenVersion(); //打開版本}if (vIndex==11){SaveDocument(); //保存正文到服務(wù)器上//webform.submit(); //然后退出window.close();}if (vIndex==13){ WebOpenPrint(); //打印文檔} </script><script language=javascript for=WebOffice event=OnToolsClick(vIndex,vCaption)>//響應(yīng)工具欄事件if (vIndex==11){webform.WebOffice.VisibleTools('手寫批注',false); //隱藏或顯示iWebOffice工具欄 true顯示 false隱藏} if (vIndex==12){webform.WebOffice.VisibleTools('手寫批注',true); //隱藏或顯示iWebOffice工具欄 true顯示 false隱藏} //if (vIndex==-1){webform.WebOffice.Alert(vCaption);} //在完成相應(yīng)操作后響應(yīng)iWebOffice標(biāo)準(zhǔn)工具欄操作銨鈕事件,如"手寫批注",vCaption="手寫批注" </script><script language="javascript">//作用:載入iWebOffice function Load(){try{//注釋部分大家可以根據(jù)解釋自己調(diào)整工具欄的顯示等//以下屬性必須設(shè)置,實始化iWebOfficewebform.WebOffice.WebUrl="<%=mServerUrl%>"; //WebUrl:系統(tǒng)服務(wù)器路徑,與服務(wù)器文件交互操作,如保存、打開文檔,重要文件webform.WebOffice.RecordID="<%=lcid%>"; //RecordID:本文檔記錄編號webform.WebOffice.Template="<%=lcid%>"; //Template:模板編號webform.WebOffice.FileName="<%=lcid%>"; //FileName:文檔名稱webform.WebOffice.FileType=".doc"; //FileType:文檔類型 .doc .xls .wpswebform.WebOffice.MaxFileSize = 8 * 1024; //最大的文檔大小控制,默認(rèn)是8M,現(xiàn)在設(shè)置成4M。webform.WebOffice.Language="CH"; //Language:多語言支持顯示選擇 CH 簡體 TW繁體 EN英文//webform.WebOffice.ShowWindow = true; //控制顯示打開或保存文檔的進度窗口,默認(rèn)不顯示webform.WebOffice.PenColor="#FF0000"; //PenColor:默認(rèn)批注顏色webform.WebOffice.PenWidth="1"; //PenWidth:默認(rèn)批注筆寬webform.WebOffice.Print="1"; //Print:默認(rèn)是否可以打印:1可以打印批注,0不可以打印批注webform.WebOffice.ShowToolBar="false"; //ShowToolBar:是否顯示工具欄:1顯示,0不顯示//以下為自定義工具欄按鈕↓ 參數(shù)一:Index按鈕編號,參數(shù)二:Caption按鈕顯示內(nèi)容,參數(shù)三:Icon圖標(biāo)名稱webform.WebOffice.AppendTools("11","隱藏手寫批注",11); //在OnToolsClick中的 vIndex=11 ,vCaption="隱藏手寫批注";webform.WebOffice.AppendTools("12","顯示手寫批注",12); //在OnToolsClick中的 vIndex=12 ,vCaption="顯示手寫批注";webform.WebOffice.AppendTools("13","-",0);//以上為自定義工具欄按鈕↑webform.WebOffice.ShowMenu="1"; //控制整體菜單顯示//以下為自定義菜單↓//webform.WebOffice.AppendMenu("1","打開本地文件(&L)");webform.WebOffice.AppendMenu("2","保存本地文件(&S)");// webform.WebOffice.AppendMenu("3","保存遠(yuǎn)程文件(&U)");// webform.WebOffice.AppendMenu("7","-");// webform.WebOffice.AppendMenu("8","保存版本(&B)");//webform.WebOffice.AppendMenu("9","打開版本(&D)");//webform.WebOffice.AppendMenu("10","-");webform.WebOffice.AppendMenu("11","保存并退出(&E)");//webform.WebOffice.AppendMenu("12","-");webform.WebOffice.AppendMenu("13","打印文檔(&P)");//以上為自定義菜單↑webform.WebOffice.DisableMenu("宏(&M);選項(&O)..."); //禁止某個(些)菜單項var mStatus=webform.WebOffice.Office2007Ribbon;if(mStatus!='-1'){webform.WebOffice.Office2007Ribbon=0;}//WebSetRibbonUIXML(); //控制OFFICE2007的選項卡顯示webform.WebOffice.WebOpen(); //打開該文檔 交互OfficeServer 調(diào)出文檔OPTION="LOADFILE" 調(diào)出模板OPTION="LOADTEMPLATE" <參考技術(shù)文檔>//獲取隱含域(書簽的值),在此需要注意:書簽不能直接在此獲取java變量值,只能是通過隱含域的方式來獲取var title=document.getElementById("title").value;var content=document.getElementById("content").value;//設(shè)置書簽值webform.WebOffice.WebSetBookMarks("title",title);webform.WebOffice.WebSetBookMarks("content",content);//EditType:編輯類型 方式一、方式二 //第一位可以為0,1,2,3 其中:0不可編輯;1可以編輯,無痕跡;2可以編輯,有痕跡,不能修訂;3可以編輯,有痕跡,能修訂;//第二位可以為0,1 其中:0不可批注,1可以批注。webform.WebOffice.EditType="0,1";//文檔顯示方式 1:表示文字批注 2:表示手寫批注 0:表示文檔核稿webform.WebOffice.ShowType=1;//隱藏痕跡webform.WebOffice.WebSetRevision(false,true,false,false);//StatusMsg(webform.WebOffice.Status); //狀態(tài)信息setTimeout("webform.WebOffice.style.display='inline'",200);}catch(e){alert(e.description); //顯示出錯誤信息}}//保存 function onsub(){//saveFile();if(SaveDocument()){alert("保存成功。");WebReFresh();}else{alert("保存失敗。");}} </script></head> <body bgcolor="#ffffff" οnlοad="" οnunlοad="UnLoad()"> <!--引導(dǎo)和退出iWebOffice--> <form name="webform" id="webform" method="post"> <!--保存iWebOffice后提交表單信息--><!-- 設(shè)置隱含域,獲取后臺書簽值 --><input type="hidden" id="title" value="<%=zzsh.get("title")==null?"":zzsh.get("title")%>"><input type="hidden" id="content" value="<%=zzsh.get("content")==null?"":zzsh.get("content")%>"> <table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%" class=TBStyle><tr><td bgcolor="menu" height="98%" valign="top"><!--調(diào)用iWebPicture,注意版本號,可用于升級codebase為插件的路徑,因為首次使用瀏覽器需要安裝插件 --><div id="DivID"><object style="display:none" id="WebOffice" width="100%" height="100%" classid="clsid:8B23EA28-723C-402F-92C4-59BE0E063499" codebase="<%=request.getContextPath()%>/hz/iWebOffice2006.cab#version=9,3,2,0"> </object></div><script language="javascript">Load();</script><!-- 版式文件控件 --><div id="hzfDisplay" style="display:none"></div></td></tr> </table> </form> </body> </html>
?
?
?? 當(dāng)然,我們的web.xml也需要改動:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name></display-name> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>OfficeServerServlet</servlet-name><servlet-class>hz.OfficeServer</servlet-class></servlet><servlet><servlet-name>GetBookMarkInfo</servlet-name><servlet-class>hz.GetBookMarkInfo</servlet-class></servlet><servlet-mapping><servlet-name>GetBookMarkInfo</servlet-name><url-pattern>/GetBookMarkInfo</url-pattern></servlet-mapping><servlet-mapping><servlet-name>OfficeServerServlet</servlet-name><url-pattern>/OfficeServerServlet</url-pattern></servlet-mapping></web-app>
?
?
5.部署
?? 編碼完成后,我們把項目部署到一個tomcat上,然后在TomcatHome/webapps/demo-iweboffice下面放一個名為demo的word文檔(注意只能是.doc格式的),這里word的名字要與GetBookMarkInfo.java中設(shè)置的名字一致。
?
6.運行
?? 我們看一下運行后的效果:
?
??
7.源碼下載
?????????????? demo-iweboffice
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的纸质办公电子化——iWebOffice中间件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。