麒麟、UOS系统在线打开word文件并提取修订痕迹

注意

本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

在实际应用中,为了方便查找和定位当前页面的某个痕迹,通常采用将当前文档中的所有痕迹遍历,并以列表方式显示到当前页面某个位置。

一般需要显示的痕迹属性包括:痕迹的用户名,痕迹的内容,痕迹的日期时间等。PageOffice 客户端控件提供了 RevisionsAsJson 对象来实现对痕迹的遍历。

RevisionsAsJson

  • author 代表当前痕迹的用户名
  • date 代表当前痕迹的日期
  • type 代表痕迹的类型
  • GetTextFromRevision 代表痕迹的文本内容

后端代码

本示例无后端关键代码。

前端代码

//获取痕迹列表,返回一组痕迹的<li>标签
function  getRevisionList(){
	var revisionList = "";
	var revisionsJson=pageofficectrl.word.RevisionsAsJson;
	var revisionObj = JSON.parse(revisionsJson);
	//遍历痕迹
	for(var key in revisionObj){
		let str = '';
		let revisionAuthor = revisionObj[key].author; //author属性为当前痕迹的用户名
		let revisionDate = revisionObj[key].date; //date属性为当前痕迹的日期
		str = dateFormat(revisionDate, '[yyyy-MM-dd HH:mm]') + revisionAuthor + ':';
		if (revisionObj[key].type === 1) { //type代表当前痕迹的类型为“插入”类型
			let revisionType = '插入';
			let revisionTxt = pageofficectrl.word.GetTextFromRevision(parseInt(revisionObj[key].id));//获取当前痕迹的文本内容
			str = str + revisionType +':' + revisionTxt;
		}
		else if (revisionObj[key].type === 2) { //type代表当前痕迹的类型为“删除”类型
			let revisionType = '删除';
			let revisionTxt = pageofficectrl.word.GetTextFromRevision(parseInt(revisionObj[key].id));
			str = str + revisionType +':' + revisionTxt;
		}
		else {
			let revisionType = '调整格式或样式。';
			str = str + revisionType ;
		}
		revisionList += "<li><a href='#' onclick='goToRevision(" + key + ")'>" + str + "</a></li>";
	}
	return revisionList;
}
//定位到一个痕迹
function goToRevision(key) {
	pageofficectrl.word.SelectRevision(key);
}
function dateFormat(date, format) {
	date = new Date((date-25569)*86400*1000);
	date = roundTimeToSeconds(date);
	date.setHours(date.getHours() - 8);
	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 roundTimeToSeconds(date) {
	var seconds = date.getSeconds();
	if (seconds < 30) {
		date.setSeconds(0);
	} else {
		date.setSeconds(0);
		date.setMinutes(date.getMinutes() + 1);
	}
	return date;
}
// 把所有痕迹的<li>标签放到一个<ul>中
function refreshList() {
	document.getElementById("ul_Comments").innerHTML = getRevisionList();
}

效果:

参考链接: https://www.pageoffice.cn/pages/a124a0/

posted @ 2025-04-25 09:54  爱吃苹果皮  阅读(9)  评论(0)    收藏  举报