1. 程式人生 > >使用PageOffice實現文件(word,excel,pdf)線上預覽編輯

使用PageOffice實現文件(word,excel,pdf)線上預覽編輯

4'、線上編輯:
/**
     * 線上編輯
     * 
     * @param request
     * @param response
     * @param id
     * @param flag
     * @return
     */
    @RequestMapping("openword/{flag}/{id}")
    public String openword(HttpServletRequest request, HttpServletResponse response, @PathVariable int id,
            @PathVariable int flag) {
        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        request.setAttribute("poCtrl", poCtrl);
        poCtrl.setTitlebar(false);
        // 設定服務頁面
        poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");
        // 新增儲存按鈕
        poCtrl.addCustomToolButton("儲存並關閉", "Save", 1);
        poCtrl.addCustomToolButton("列印", "ShowPrintDlg()", 6);
        poCtrl.addCustomToolButton("全屏切換", "SwitchFullScreen()", 4);
        // 設定儲存的action
        poCtrl.setSaveFilePage(request.getContextPath() + "/wep/savefile/" + flag);
        // 開啟word
        List<FileMeta> entity = fileMetaService.getList(getEntity(flag, id));
        String path = ZipService.getPath(entity.get(0));
        String realpath = path.replace("/", "\\\\");
        String suffix = path.substring(path.lastIndexOf(".") + 1);
        if ("doc".equals(suffix) || "docx".equals(suffix)) {
            poCtrl.webOpen(realpath, OpenModeType.docNormalEdit, "張三");
        } else if ("xls".equals(suffix) || "xlsx".equals(suffix)) {
            poCtrl.webOpen(realpath, OpenModeType.xlsNormalEdit, "張三");
        }
        return "Word";
    }

5、線上編輯需要儲存,所以有線上儲存:
/**
     * 儲存
     * 
     * @param request
     * @param response
     * @param flag
     */
    @RequestMapping("savefile/{flag}")
    public void savefile(HttpServletRequest request, HttpServletResponse response, @PathVariable int flag) {
        FileSaver fs = new FileSaver(request, response);
        if (flag == 1) {// hse 儲存路徑
            fs.saveToFile("D:\\Demo\\conhse\\" + fs.getFileName());
        } else if (flag == 2) {
            fs.saveToFile("D:\\Demo\\doc\\" + fs.getFileName());
        } else if (flag == 3) {
            fs.saveToFile("D:\\Demo\\hsequa\\" + fs.getFileName());
        } else if (flag == 4) {
            fs.saveToFile("D:\\Demo\\eva\\" + fs.getFileName());
        } else if (flag == 5) {
            fs.saveToFile("D:\\Demo\\leg\\" + fs.getFileName());
        } else if (flag == 6) {
            fs.saveToFile("D:\\Demo\\plan\\" + fs.getFileName());    
        }
        fs.close();
    }
6、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 -->
7、jsp配置

<%@ page language="java"
    import="java.util.*,com.zhuozhengsoft.pageoffice.*"
    pageEncoding="UTF-8"%>
<%
    PageOfficeCtrl poCtrl = (PageOfficeCtrl) request.getAttribute("poCtrl");
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>最簡單的開啟儲存Word檔案</title>
<!-- <script type="text/javascript" >
function getPageOfficeJsUrl(){var d=document.URL;var c=d.substring(0,find(d,"/",3)+1);var a=d.substring(0,find(d,"/",4)+1);var f=new Array();f[0]=c;f[1]=a;for(var b=0;b<f.length;b++){var e="pageoffice.js";ajax({url:f[b]+"/pageoffice.js",type:"GET",data:{name:"super"},dataType:"json",success:function(h,k){if(d.indexOf("?")>0){d=d.substring(0,d.indexOf("?"))}var g=countChar(d.substring(f[b].length),"/");for(var i=0;i<g;i++){e="../"+e}alert('src="'+e+'"')},fail:function(g){}})}}function countChar(d,e){var b=0;for(var a=0;a<d.length;a++){if(d.charAt(a)==e){b++}}return b}function find(e,b,c){var a=0;for(var d=0;d<c;d++){a=e.indexOf(b,a+1)}return a}getPageOfficeJsUrl();function ajax(a){a=a||{};a.type=(a.type||"GET").toUpperCase();a.dataType=a.dataType||"json";var c=formatParams(a.data);if(window.XMLHttpRequest){var b=new XMLHttpRequest()}else{var b=new ActiveXObject("Microsoft.XMLHTTP")}b.onreadystatechange=function(){if(b.readyState==4){var d=b.status;if(d>=200&&d<300){a.success&&a.success(b.responseText,b.responseXML)}else{a.fail&&a.fail(d)}}};if(a.type=="GET"){b.open("GET",a.url+"?"+c,false);b.send(null)}else{if(a.type=="POST"){b.open("POST",a.url,false);b.setRequestHeader("Content-Type","application/x-www-form-urlencoded");b.send(c)}}}function formatParams(c){var a=[];for(var b in c){a.push(encodeURIComponent(b)+"="+encodeURIComponent(c[b]))}a.push(("v="+Math.random()).replace(".",""));return a.join("&")};
</script> -->
<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="width: 100%; height: 100%;">
        <%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
    </div>
    <script type="text/javascript">
        function Save() {
            document.getElementById("PageOfficeCtrl1").WebSave();
            POBrowser.closeWindow();//關閉POBrowser視窗
        }
        function ShowPrintDlg() {
            document.getElementById("PageOfficeCtrl1").ShowDialog(4); //列印對話方塊
        }
        function SwitchFullScreen() {//全屏
            document.getElementById("PageOfficeCtrl1").FullScreen = !document
                    .getElementById("PageOfficeCtrl1").FullScreen;
        }
    </script>
</body>
</html>