pageoffice 儲存修改痕跡列表(Java版)
阿新 • • 發佈:2018-12-14
在oa辦公流程過程中,一份檔案會經過若干人的手中,也就意味著檔案會經歷多次修改,一次一次的修改,就應當記錄誰修改了哪些內容,因此,檔案的修改痕跡記錄就相當有必要。 在這裡為了區別於office文件自帶的修改痕跡列表,我自己添加了一個痕跡列表,使用起來更加方便。 主要用js方法控制記錄,程式碼如下(Word.jsp):
<%@ page language="java" import="java.util.*,java.awt.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*" pageEncoding="utf-8"%> <% //******************************卓正PageOffice元件的使用******************************* PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必須 //設定頁面儲存 //SaveFile.jsp頁面在pageoffice官網有 poCtrl.setSaveFilePage("SaveFile.jsp"); //隱藏選單欄 poCtrl1.setMenubar(false); poCtrl1.webOpen(request.getParameter("fileName"), OpenModeType.docNormalEdit, request.getParameter("user")); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <style> *{ margin:0; } #ul_Comments{ padding: 0; border:none; margin:0; } #ul_Comments li{ background: #EDF1F7; border-bottom: 1px solid #eaeaea; } #ul_Comments li a{ color: #97999D; display: block; padding:5px 0; padding-left:8px; font-size:16px; } #ul_Comments li a:hover{ color:#fff; background:#11A5A9; } #Div_Comments{ position:absolute; width:20%; height:100%; min-width:185px; overflow: scroll; overflow-x:hidden; } #office_box{ position:absolute; width:80%; height:100%; left:20%; min-width:804px; min-height:700px; } </style> <script type="text/javascript"> function Save() { document.getElementById("PageOfficeCtrl1").WebSave(); refresh_click(); } function AfterDocumentOpened() { refreshList(); } //獲取當前痕跡列表 function refreshList() { var i; document.getElementById("ul_Comments").innerHTML = ""; for (i = 1; i <= document.getElementById("PageOfficeCtrl1").Document.Revisions.Count; i++) { var str = ""; str = str + document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Author; var revisionDate=document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Date; //轉換為標準時間 str=str+"<br/>"+dateFormat(revisionDate,"yyyy-MM-dd HH:mm:ss"); if (document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Type == "1") { str = str+"<br/>" + ' 插入:' + document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Range.Text; } else if (document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Type == "2") { str = str+"<br/>" + ' 刪除:' + document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Range.Text; } else { str = str+"<br/>" + ' 調整格式或樣式。'; } document.getElementById("ul_Comments").innerHTML += "<li><a href='#' onclick='goToRevision(" + i + ")'>" + str + "</a></li>" } } //GMT時間格式轉換為CST dateFormat = function (date, format) { date = new Date(date); var o = { 'M+' : date.getMonth() + 1, //month 'd+' : date.getDate(), //day 'H+' : date.getHours(), //hour 'm+' : date.getMinutes(), //minute 's+' : date.getSeconds(), //second 'q+' : Math.floor((date.getMonth() + 3) / 3), //quarter 'S' : date.getMilliseconds() //millisecond }; if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp('(' + k + ')').test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)); return format; } //定位到當前痕跡 function goToRevision(index) { var sMac = "Sub myfunc() " + "\r\n" + "ActiveDocument.Revisions.Item("+index+").Range.Select " + "\r\n" + "End Sub "; document.getElementById("PageOfficeCtrl1").RunMacro("myfunc", sMac); } //重新整理列表 function refresh_click(){ refreshList(); } </script> <body style="width:100%; height:100%; position: absolute;"> <div style="width:auto; height:100%;"> <div id="Div_Comments"> <h3 style="text-align: center; font-style: '微軟雅黑'; font-weight: normal; margin-bottom:8px;">痕跡列表</h3> <a href="javascript:;" name="refresh" onclick=" return refresh_click()" style="float: right; margin:0 6px 6px 0;">重新整理</a> <div style="clear: both;"></div> <ul id="ul_Comments"> </ul> </div> <div id="office_box"> <%=poCtrl1.getHtmlCode("PageOfficeCtrl1")%> </div> </div> <div style="clear: both;"></div> </body> </html>
效果圖如下: 圖片左側即是痕跡列表,樣式可以自行修改。