当前位置: 首页 > news >正文

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

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

  •  查看本示例演示效果(Windows版)
  •  查看本示例演示效果(国产版)
  • 本示例关键代码的编写位置,请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码

注意

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

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

一般需要显示的痕迹属性包括:痕迹的用户名,痕迹的内容,痕迹的日期时间等。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/

相关文章:

  • SpringBoot多工程项目微服务install时如何不安装到本地仓库
  • word模板填充导出-(支持word导出、pdf导出)
  • Langchain+文本摘要-refine
  • 芯片软错误概率探究:基于汽车芯片安全设计视角
  • 理解数据库存储以及查询(集合)
  • 数据科学与计算
  • 免疫细胞靶点“破局战”:从抗体到CAR-T,自免疾病治疗的3大技术突破
  • 【算法学习】哈希表篇:哈希表的使用场景和使用方法
  • ES使用之查询方式
  • 用Power shell脚本批量发布rdl文件到SQL Server Reporting Service
  • Android Framework框架与启动过程初识一
  • uniapp如何获取安卓原生的Intent对象
  • 分布式-redisson
  • 关于 live555延迟优化之缓存区优化“StreamParser::afterGettingBytes() warning: read”” 的解决方法
  • PLC与工业电脑:有什么区别?
  • 精益数据分析(35/26):SaaS商业模式关键指标解析
  • AI生成Flutter UI代码实践(一)
  • 【MongoDB篇】MongoDB的文档操作!
  • 运维打铁: 存储方案全解析
  • 【MongoDB篇】MongoDB的索引操作!
  • flash做网站的流程/seo技巧优化
  • 滁州网站定制/cms网站模板
  • 网站开发前途/邯郸seo优化公司
  • 外贸建站 宁波/免费外链网
  • 免费咨询身高问题/沈阳seo关键词
  • 怎么查看网站外链效果/自己有网站怎么推广