zoukankan      html  css  js  c++  java
  • pageoffice

    一、选择文件打开

    1.postup.exe安装

    2.导入jar包:pageoffice.jar

    理论上不需要印章功能下面两个不需要导入,我只用到了第一个jar包,用于导出word文档在线编辑并保存.

    3.再web.xml中添加下面代码:

     <!-- PageOffice Begin -->
        <servlet>
            <servlet-name>poserver</servlet-name>
            <servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/poserver.zz</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/sealsetup.exe</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/posetup.exe</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/pageoffice.js</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/jquery.min.js</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/pobstyle.css</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>adminseal</servlet-name>
            <servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>adminseal</servlet-name>
            <url-pattern>/adminseal.zz</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>adminseal</servlet-name>
            <url-pattern>/loginseal.zz</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>adminseal</servlet-name>
            <url-pattern>/sealimage.zz</url-pattern>
        </servlet-mapping>
        <mime-mapping>
            <extension>mht</extension>
            <mime-type>message/rfc822</mime-type>
        </mime-mapping>
        <context-param>
            <param-name>adminseal-password</param-name>
            <param-value>111111</param-value>
        </context-param>
        <!-- PageOffice End -->
    

    4.这里修改成您的印章简易管理页的管理员登录密码,为了安全,强烈建议修改!!!
    如果您用的是默认的Access数据库,下面节点不用修改,继续保持被注释状态或直接删除。 如果您用的是Oracle、MySQL等其他数据库,请将下面节点的注释去掉,并且修改成您的印章数据库连接参数。最好把WEB-INF\lib下的seal.mdb也删除掉。

    <context-param>
          <param-name>posealdb-driver</param-name>
          <param-value>oracle.jdbc.driver.OracleDriver</param-value>
      </context-param>
      <context-param>
          <param-name>posealdb-url</param-name>
          <param-value>jdbc:oracle:thin:@192.168.0.1:1521:orcl</param-value>
      </context-param>
      <context-param>
          <param-name>posealdb-username</param-name>
          <param-value>system</param-value>
      </context-param>
      <context-param>
          <param-name>posealdb-password</param-name>
          <param-value>111111</param-value>
      </context-param>
    

    5.调用pageoffice需要在jsp中加入下面代码:

    <script type="text/javascript" src=" jquery.min.js"></script>
    <script type="text/javascript" src=" pageoffice.js" id="po_js_main"></script>
    
    注意:由于再 准备3 中已经再web.xml中配置了pageoffice.js和jquery.min.js,所以此处无需将js文件放入webapp目录下
    

    6.index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>"><
        
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        
         <!--PageOffice.js和jquery.min.js文件一定要引用-->
         <script type="text/javascript" src="jquery.min.js"></script>
         <script type="text/javascript" src="pageoffice.js" id="po_js_main"></script>
      </head>
      
      <body>
       <div style="text-align:center;">
        <b>在线编辑</b><br>
        <a href="javascript:POBrowser.openWindowModeless('openword' , 'width=1200px;height=800px;');">word测试</a><br>
       </div>
      </body>
    </html>
    

    7.word.jsp

    <%@ page language="java"
    	import="java.util.*,com.zhuozhengsoft.pageoffice.*"
    	pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.pageoffice.cn" prefix="po" %>
    <%
    		PageOfficeCtrl poCtrl = (PageOfficeCtrl)request.getAttribute("poCtrl");
     %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
    <body>
        <form id="form1" >
        <div style="auto; height:700px;">
           <%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
        </div>
        </form>
        <script src="js/assets/global/plugins/jquery.min.js"
    		type="text/javascript"></script>
        <script src="js/serviceJs/xtgl/word.js" charset="UTF-8"></script>
        <!-- END PAGE LEVEL SCRIPTS -->
    	<script>
    	    //隐藏标题栏
    	    document.getElementById("PageOfficeCtrl1").Titlebar = false;
    	    //隐藏菜单栏
    	    document.getElementById("PageOfficeCtrl1").Menubar = false;
    		function importWord() {
    	        document.getElementById("PageOfficeCtrl1").WordImportDialog();
    	    }
    	    //Excel打开
    	    function ExcelImportDialog() {
    	        document.getElementById("PageOfficeCtrl1").ExcelImportDialog();
    	    }
    		 //保存
    		 function SaveDocument() {
    	        document.getElementById("PageOfficeCtrl1").WebSave();
    	    }
    		 //打印
    	    function ShowPrintDlg() {
    	        document.getElementById("PageOfficeCtrl1").ShowDialog(4); //打印对话框
    	    }
    	    //全屏
    	    function SwitchFullScreen() {
    	        document.getElementById("PageOfficeCtrl1").FullScreen = !document.getElementById("PageOfficeCtrl1").FullScreen;
    	    }
    	    //關閉
    	    function CloseFile(){
                window.external.close(); 
            }
            function ShowDefineDataTags() {
                document.getElementById("PageOfficeCtrl1").ShowHtmlModelessDialog("dataRegionDlg", "parameter=xx", "left=300px;top=390px;width=520px;height=410px;frame:no;");
            }
    	    
    	  //获取后台定义的Tag 字符串
            function getTagNames() {
            	var tagNames = document.getElementById("PageOfficeCtrl1").defineTagNames;
                return tagNames;
            }
            
            //定位Tag
            function locateTag(tagName) {
                
                var appSlt = document.getElementById("PageOfficeCtrl1").Document.Application.Selection;
                var bFind = false;
                //appSlt.HomeKey(6);
                appSlt.Find.ClearFormatting();
                appSlt.Find.Replacement.ClearFormatting();
    
                bFind = appSlt.Find.Execute(tagName);
                if (!bFind) {
                    document.getElementById("PageOfficeCtrl1").Alert("已搜索到文档末尾。");
                    appSlt.HomeKey(6);
                }
                window.focus();
    
            }
    
            //添加Tag
            function addTag(tagName) {
                try {
                    var tmpRange = document.getElementById("PageOfficeCtrl1").Document.Application.Selection.Range;
                    tmpRange.Text = tagName;
                    tmpRange.Select();
                    return "true";
                } catch (e) {
                    return "false";
                }
            }
            
            //删除Tag
            function delTag(tagName) {
                var tmpRange = document.getElementById("PageOfficeCtrl1").Document.Application.Selection.Range;
                
                if (tagName == tmpRange.Text) {
                    tmpRange.Text = "";
                    return "true";
                }
                else
                    return "false";
    
            }
    	</script>
    </body>
    </html>
    
    

    8.Controller

    @RequestMapping("openword")  
    public String openword(HttpServletRequest request, HttpServletResponse response) {
                    WordDocument doc = new WordDocument();
    		doc.getTemplate().defineDataTag("{ 甲方 }");
    		doc.getTemplate().defineDataTag("{ 乙方 }");
    
    		PageOfficeCtrl poCtrl=new PageOfficeCtrl(request);
    		poCtrl.setServerPage(request.getContextPath()+"/poserver.zz");//设置服务页面
    		poCtrl.addCustomToolButton("Word","importWord()",13);//添加自定义保存按钮
    		poCtrl.addCustomToolButton("Excel","ExcelImportDialog()",13);//添加自定义保存按钮
                    poCtrl.addCustomToolButton("定义数据区域", "ShowDefineDataTags()", 20);
    		poCtrl.addCustomToolButton("保存", "SaveDocument()", 1);
    		poCtrl.addCustomToolButton("打印", "ShowPrintDlg()", 6);
    		poCtrl.addCustomToolButton("-", "", 5);
    		poCtrl.addCustomToolButton("全屏切换", "SwitchFullScreen()", 4);
    		poCtrl.addCustomToolButton("关闭", "CloseFile()", 21);
    		//设置保存页面
    		poCtrl.setSaveFilePage("savefile");
    		poCtrl.setTagId("PageOfficeCtrl1"); //此行必须
    		poCtrl.setTheme(ThemeType.Office2007);
                    poCtrl.setBorderStyle(BorderStyleType.BorderThin);
    		poCtrl.setWriter(doc);
    		request.setAttribute("poCtrl", poCtrl);
                    return "BasicInformation/openDocument";  
            
    	}
    
    //文件保存
        @RequestMapping("savefile")
         public  void  savefile(HttpServletRequest request, HttpServletResponse response){
            FileSaver fs = new FileSaver(request, response);
            fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") + "/" + fs.getFileName());
            fs.close();
        }
    

    二、数据回显

    1.js调用文件

    POBrowser.openWindowModeless('openfile?id='+aData.num,'width=1200px;height=800px;');
    

    2.openfile.jsp

    <%@ page language="java"
    	import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*"
    	pageEncoding="utf-8"%>
    
    <%@ taglib uri="http://java.pageoffice.cn" prefix="po" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>   
        <title>审计通知书模板</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    
    
      </head>
      
      <body>
        <div style=" auto; height:700px;">
           <po:PageOfficeCtrl id="PageOfficeCtrl1" />
        </div>
    <script type="text/javascript">
        function Save() {
            document.getElementById("PageOfficeCtrl1").WebSave();
        }
    </script>
      </body>
    </html>
    

    3.controller文件

    @RequestMapping(value = "openfile")
    	public String openfile(HttpServletRequest request, String id) {
    		AUDIT_PNOTICE_MB mb = noticeService.getSjtzsByNum(id);
    		
    		String suffix = mb.getName().substring(mb.getName().lastIndexOf(".") + 1);
    		
    		String filePath = AddressUtil.getUpload_address() + "\\" + Constants.PATH_TZMB 
              		+ "\\" + mb.getNum()+"."+suffix;
    		
    		PageOfficeCtrl poCtrl=new PageOfficeCtrl(request);
            poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");//设置授权程序servlet
            poCtrl.setTitlebar(false); //隐藏标题栏
      		poCtrl.setMenubar(false); //隐藏菜单栏
      		poCtrl.setOfficeToolbars(false);//隐藏Office工具条
      		poCtrl.setCustomToolbar(false);
            
            if ("DOC".equals(suffix.toUpperCase()) || "DOCX".equals(suffix.toUpperCase())) {
            	poCtrl.webOpen(filePath,OpenModeType.docReadOnly,"张三");//D:\\UploadFiles\\22.docx
    		}else {
    			poCtrl.webOpen(filePath,OpenModeType.xlsReadOnly,"张三");
    		}
            poCtrl.setTagId("PageOfficeCtrl1"); //此行必须
            return "BasicInformation/openfile";
            
    	}
    

    数据区域

    dataRegionDlg.jsp

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
       <meta charset="utf-8">
       <meta http-equiv="X-UA-Compatible" content="IE=edge">
       <style type="text/css">
            #tagTable td{ height:25px; border-bottom:dotted 1px gray;}
        </style> 
        <script type="text/javascript">
    
            // 方法: window.external.CallParentFunc 
            // 作用: 调用父窗口中的js函数, 目前只支持传递一个参数. 
            var names = window.external.CallParentFunc("getTagNames", ""); 
            alert(names)
            var tagArr = names.split(";");
    
            //首次加载数据
            function load() {
                searchBookMark('');
                return;
            }
            
            //加载数据列表
            function searchBookMark(s) {
                //删除所有行
                var tb1 = document.getElementById("tagTable");
                var rCount = tb1.rows.length;
                for (var i = 0; i < rCount; i++) {
                    tb1.deleteRow(0);
                }
              
                var oTable = document.getElementById("tagTable");
                for (var i = 0; i < tagArr.length; i++) {
                    if (tagArr[i] != null && tagArr[i] != "" && 0 == tagArr[i].toLocaleLowerCase().indexOf(s.toLocaleLowerCase())) {
                        var oTr = oTable.insertRow();
                        var oTd = oTr.insertCell();
                        oTd.innerHTML = tagArr[i];
                        oTd = oTr.insertCell();
                        oTd.innerHTML = "&nbsp;&nbsp;<a href=\"javascript:void(0);\"  onclick= \"add('" + tagArr[i] + "','aaaa')\">&nbsp;添加</a>";
                        oTd = oTr.insertCell();
                        oTd.innerHTML = "&nbsp;&nbsp;<a href=\"javascript:void(0);\"  onclick= \"locate('" + tagArr[i] + "')\">&nbsp;定位</a>";
                        oTd = oTr.insertCell();
                        oTd.innerHTML = "&nbsp;&nbsp;<a href=\"javascript:void(0);\"  onclick= \"del('" + tagArr[i] + "')\">&nbsp;删除</a>";
                    }
                }
            }
          
    
            function Button1_onclick() {
    
                var s = document.getElementById("Text1").value.toLocaleLowerCase();
                var tb1 = document.getElementById("tagTable");
                var rCount = tb1.rows.length;
                for (var i = 0; i < rCount; i++) {
                    tb1.deleteRow(0);
                }
    
                var oTable = document.getElementById("tagTable");
                for (var i = 0; i < tagArr.length; i++) {               
                    if (tagArr[i] != null && tagArr[i] != "" && tagArr[i].toLocaleLowerCase().indexOf(s) >= 0) {
    
                        var oTr = oTable.insertRow();
                        var oTd = oTr.insertCell();
                        oTd.innerHTML = tagArr[i];
                        oTd = oTr.insertCell();
                        oTd.innerHTML = "&nbsp;&nbsp;<a href=\"javascript:void(0);\"  onclick= \"add('" + tagArr[i] + "')\">&nbsp;添加</a>";
                        oTd = oTr.insertCell();
                        oTd.innerHTML = "&nbsp;&nbsp;<a href=\"javascript:void(0);\"  onclick= \"locate('" + tagArr[i] + "')\">&nbsp;定位</a>";
                        oTd = oTr.insertCell();
                        oTd.innerHTML = "&nbsp;&nbsp;<a href=\"javascript:void(0);\"  onclick= \"del('" + tagArr[i] + "')\">&nbsp;删除</a>";
                    }
                }
            }
    
    
            //******** Tag 操作 ************************************************************
    
            function add(name) {
                if ("true" ==  window.external.CallParentFunc("addTag", name)) {
    
                }
            }
    
            function del(name) {//alert(name);
                if ("false" == window.external.CallParentFunc("delTag",  name)) {
                    alert("请先执行\"定位\"操作,然后再删除。");
                }
            }
    
            function locate(name) {
    
                window.external.CallParentFunc("locateTag", name); 
            } 
    
        </script>
    </head>
    <body>
        <div style=" 380px; height: 320px;">
            <div style="float: left;font-size:12px;">
                <span>待添加数据标签:</span><br />
                <input id="Text1" type="text" onpropertychange="searchBookMark(this.value);" oninput="searchBookMark(this.value);"   />
                <input id="Button1" type="button" value="搜索" onclick="return Button1_onclick()" />
                <div style=" 380px; height: 300px; border: solid 1px #ccc; overflow-y: scroll;  ">
                    <table id="tagTable" style=" font-size:12px;">
                    </table>
                </div>
            </div>
    
        </div>
    </body>
    <script type="text/javascript">
    	load();
        //alert(2);
    </script>
    </html>
    
    
  • 相关阅读:
    Sublime Text 最佳插件列表(转)
    MyBatis入门(六)---mybatis与spring的整合
    MyBatis入门(五)---延时加载、缓存
    MyBatis入门(三)---多个参数
    MyBatis入门(二)---一对一,一对多
    AccessRandomFile多线程下载文件
    MyBatis入门(一)---基本使用
    JAVA基础学习day27--反射机制
    简明 Vim 练级攻略(转)
    JAVA基础学习day26--正则表达式
  • 原文地址:https://www.cnblogs.com/sunBinary/p/11112214.html
Copyright © 2011-2022 走看看