CN107734074A - 一种在线阅读和编辑文档的实现方法 - Google Patents
一种在线阅读和编辑文档的实现方法 Download PDFInfo
- Publication number
- CN107734074A CN107734074A CN201711220560.8A CN201711220560A CN107734074A CN 107734074 A CN107734074 A CN 107734074A CN 201711220560 A CN201711220560 A CN 201711220560A CN 107734074 A CN107734074 A CN 107734074A
- Authority
- CN
- China
- Prior art keywords
- dol
- document
- web
- editor
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种在线阅读和编辑文档的实现方法,包括在线阅读处理方式和在线编辑处理方式;提供了高兼容性的web在线编辑功能,可以高精度的在web上还原出文档内容,同时提供无缝结合的完整编辑体验;通过系统服务+自定义协议双模式的引导流程,基本能兼容目前所有web浏览器和桌面环境;同时与web系统的用户信息结合,文档基本信息和审阅相关的信息可以更好的和业务系统整合在一起。
Description
技术领域
本发明涉及网络通信技术领域,尤其是一种在线阅读和编辑文档的实现方法。
背景技术
为了实现能够与web系统结合的对常规文档进行在线编辑的功能,大部分使用在线HTML富文本编辑器,也有一些使用了ActiveX控件或者npapi插件的方案;但是上述方案存在以下问题:
1、使用HTML富文本在线编辑功能的方案,由于HTML的展示能力本身的限制,无法完整的展示和操作Word和Excel的大部分特性;和原文档会有较大的差异,特别在编辑一些公文、合同等严格要求格式的文档的时候,仅通过HTML无法适用;
2、使用浏览器插件的方式主要是ActiveX和NPAPI,分别针对微软iexplorer浏览器(包括基于IE WebBrowser的第三方浏览器)和Firefox,这种方式存在如下几个问题:
A、浏览器兼容性问题严重。由于ActiveX和NPAPI两种技术方案都已经处于淘汰阶段,微软的新浏览器EDGE已经放弃ActiveX技术,目前用户使用率最高的Chrome浏览器也已经停止NPAPI的支持,这两种插件方式已经无法适用于这两大主流浏览器。
B、在线阅读和编辑体验很差。由于插件方式都采用了内嵌入浏览器,插件使用ActiveX来加载文档,对于简单阅读不需要编辑的场景来说,阅读方放也需要安装插件,同时由于使用了DCOM进程外组件,加载也会比较缓慢。而且由于Word和Excel等办公软件界面复杂,不同office版本的工具条大小也不一致,特别在最新的Office中普遍使用了大型的Ribbon工具条,使用网页内嵌的方式进行阅读和编辑导致编辑区域空间太小。
还有一种方案是简单的通过微软的扩展协议(URL Protocol)标准来打开本地编辑工具,这种方案无法缺乏适当的环境检测功能(无法知道本地编辑软件已经安装),也无法将web业务功能与文档相结合。
发明内容
本发明要解决的技术问题是:提出一种在线阅读和编辑文档的实现方法。
本发明所采用的技术方案为:一种在线阅读和编辑文档的实现方法,包括在线阅读处理方式和在线编辑处理方式;
所述的在线阅读处理方式包括以下步骤:
1)发起阅读请求,配置服务器文档源信息;并根据目标文档信息相服务器发起阅读请求;
2)WebApp从文件库读取现有的文档或空白文档模板二进制流将数据提交DOL_MAG创建编辑句柄;
3)返回DOL_EH的句柄编号EHID;
4)检测浏览器环境判断浏览器是否支持PDF组件;根据浏览器环境检测结果使用DOL_EHID向MAG提交文档转换请求;
5)根据请求类型的不同将文档转换为单个PDF或者多个JPG图片;
6)返回PDF文件web地址或者JPG文件web地址列表;
7)向DOL_SVC发起客户端程序检测;
8)将阅读信息河发送给WebUI进行展示并向WebUI进行汇报;
所述的在线编辑处理方式包括以下三个步骤:启动编辑步骤、进行编辑步骤以及保存编辑结果步骤;
其中,
启动编辑步骤包括:DOL_WEB组件接收到编辑请求后,向本地DOL_SVC发起编辑请求;DOL_SVC通过检测当前桌面环境来确定是否直接启动DOL_APP;DOL_APP启动后向DOL_MAG请求文档数据;DOL_MAG接收到DOL_APP的请求后,准备文档数据流进入编辑状态并返回有效的原始文档数据流和文档信息;
进行编辑步骤包括:将文档文件保存在本地临时目录;检测文档编辑器环境同时创建状态跟踪器;创建文档编辑器Application对象初始化相关参数和事件打开文档进行编辑;
保存编辑结果步骤包括:DOL_APP收到关闭文档通知后,在获取文档数据前创建文件状态跟踪器;提交最新的文件数据流并通知DOL_WEB;DOL_WEB重新加载阅读文档。
进一步的说,在线阅读处理方式中,DOL_MAG根据文件流和文件名信息创建DOL_EH;包括以下步骤:
S1、校验文件流和文件名的匹配性,检查文件流的有效性;
S2、将文件缓存在DOL_MAG文件管理区域,包括内存缓存、磁盘文件缓存、数据库缓存的方式;
S3、创建DOL_EH数据块,EH信息中包含管理和跟踪编辑流程中的整个数据信息;
S4、生成EHID,EHID的生成采用非连续性的随机序号,使用包括SnowFake、GUID算法来生成;
S5、初始化DOL_EH的原始文档信息,初始化编辑状态为“已加载”,更新序列为0,时间戳记入当前时间;
S6、将DOL_EH数据块并放入缓存区域,包括内存缓存、磁盘文件缓存、数据库缓存的方式,同时对EHID进行有序索引化处理用于快速搜索;
S7、将EHID作为DOL_MAG接口的返回值,通过调用方WebApp返回给DOL_WEB。
再进一步的说,在线阅读处理方式中,业务程序前段WebUI根据业务要求,在需要展示文档阅读的网页中向DOL前段组件DOL_WEB发起文档阅读初始化,包括以下步骤:
S1、业务前段WebUI导入DOL_WEB的JS脚本库;
S2、业务前段WebUI准备好于业务后端兼容的文件信息参数,业务后端WebApp通过该参数与具体的文件数据相关联;
S3、配置业务后端WebApp处理程序的地址参数;
S4、配置文档展示区域参数,包括使用HTML Element Id、HTML Element Object、CSS选择器表明展示容器的方法;
S5、将参数传递给DOL_WEB前段脚本库。
进一步的说,启动编辑步骤中,DOL_SVC通过对桌面环境的检测,有且只有单一可交互的Window Station Session激活的情况下才直接启动DOL_APP。
再进一步的说,DOL_SVC未能成功启动DOL_APP,DOL_WEB将尝试进行URL方式启动,URL方式使用了Windows提供的自定义协议功能。
再进一步的说,进行编辑步骤中,检测当前操作系统环境下是否存在WPS或者OFFICE相关文档编辑软件;若环境检测失败,则向DOL_MAG请求结束编辑操作;DOL_MAG接收到DOL_APP的取消编辑的请求后通知DOL_WEB结束编辑。
再进一步的说,进行编辑步骤中,DOL_APP创建本地编辑器应用对象,进入文件编辑状态;包括:
S1、初始化COM组件环境,创建符合文档格式的Application对象,为了兼顾不同版本的兼容性问题,所有COM组件操作采用IDispatch后期绑定调用;
S2、使用Application打开存放在临时文件夹下的文件;
S3、根据DOL_APP的启动参数设置文档标题和当前操作人信息;
S4、向文档对象创建订阅关闭跟踪事件;
S5、通过AttachThreadInput和BringWindowToTop,将当前的编辑器窗口前置。
再进一步的说,保存编辑结果步骤中,文件关闭后,使用兼容DOL_MAG的数据连接,提交包括EHID和新文档的二进制流;提交完成之后,DOL_APP退出进程。
再进一步的说,DOL_MAG获得新的文件留后,更新DOL_EH相关信息,并通知DOL_WEB;DOL_WEB重新加载阅读文档,与阅读流程相同。
本发明的有益效果是:提供了高兼容性的web在线编辑功能,可以高精度的在web上还原出文档内容,同时提供无缝结合的完整编辑体验;通过系统服务+自定义协议双模式的引导流程,基本能兼容目前所有web浏览器和桌面环境;同时与web系统的用户信息结合,文档基本信息和审阅相关的信息可以更好的和业务系统整合在一起。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明阅读处理流程图;
图2是本发明在线编辑处理的启动流程图;
图3是本发明在线编辑处理的编辑流程图;
图4是本发明在线编辑处理的保存流程图。
具体实施方式
现在结合附图和优选实施例对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
一种在线阅读和编辑文档的实现方法,用于实现完整的网页在线阅读和编辑流程;需要采用以下组件:Web组件(HTML组件和web服务端组件)和本地软件(windows服务组件和office操作组件);
其中,web组件功能包括:A、提供网页的展示和操作功能;B、提供授权验证和操作流程控制;C、提供文档格式转换功能;本地软件功能包括:A、提供网页的检测和互操作功能;B、提供与本地Office/WPS组件交互的功能。
为了方便后续简化描述,对名字进行以下定义:本软件方案:DOL(DocumentOnline);Web前段组件:DOL_WEB;WEB服务端组件:DOL_MAG(MANAGER,该组件提供整个在线的流程管理和文档管理服务);本地服务程序组件:DOL_SVC;本地桌面端组件:DOL_APP;文档编辑句柄:DOL_EH;业务Web应用程序:WebApp;业务Web前段:WebUI。
下面结合附图做详细说明:
如图1所示,阅读流程为:
1、业务程序前段WebUI根据业务要求,在需要展示文档阅读的网页中向DOL前段组件DOL_WEB发起文档阅读初始化。
S1、业务前段WebUI导入DOL_WEB的JS脚本库;
S2、业务前段WebUI准备好于业务后端兼容的文件信息参数(可选),业务后端WebApp可通过该参数与具体的文件数据相关联(包括创建文件或者获取已有文件);
S3、配置业务后端WebApp处理程序的地址参数;
S4、配置文档展示区域参数,包括使用HTML Element Id、HTML Element Object、CSS选择器等表明展示容器的方法;
S5、将参数传递给DOL_WEB前段脚本库。
2、DOL_WEB根据配置信息向WebApp发起阅读准备请求,该请求使用AJAX模式,数据采用双方约定好的格式化文本表达,包括但不限于JSON、XML,特殊字符分割等各类格式化文本方案。请求中还包括配置中可选的文件信息参数。
3、WebApp接收到DOL_WEB的请求之后,向DOL_MAG发起DOL_EH的创建流程。
S1、WebApp按照约定好的方法对DOL_WEB的格式化请求进行解析和验证(可选),包括当前操作人的安全验证和权限验证;
S2、根据DOL_WEB提供的参数信息或者当前地址信息,获得业务对应的文件数据流,包括但不限于内存中动态创建的文件数据流、存储在数据库中的文件数据流、存储在磁盘或文件服务器中的文件数据流,从远程服务器动态下载的文件数据流;
S3、将文件信息和文件名信息以及当前操作人信息提交给DOL_MAG程序,DOL_MAG以包括但不限于共享类库、Web Service、COM组件的方式存在。
4、DOL_MAG根据文件流和文件名信息创建DOL_EH。
S1、校验文件流和文件名的匹配性,检查文件流的有效性;
S2、将文件缓存在DOL_MAG文件管理区域,包括但不限于内存缓存、磁盘文件缓存、数据库缓存的方式;
S3、创建DOL_EH数据块,EH信息中包含管理和跟踪编辑流程中的整个数据信息,如下表:
EHID |
当前操作人名 |
文档标题 |
原始文档名 |
原始文档数据流引用 |
文档转换标识 |
文档转换结果引用 |
编辑状态 |
EH更新序列 |
时间戳 |
S4、生成EHID,EHID的生成采用非连续性的随机序号,可以使用但不限于包括SnowFake、GUID等算法来生成;
S5、初始化DOL_EH的原始文档信息,初始化编辑状态为“已加载”,更新序列为0,时间戳记入当前时间;
S6、将DOL_EH数据块并放入缓存区域,包括但不限于内存缓存、磁盘文件缓存、数据库缓存的方式,同时对EHID进行有序索引化处理用于快速搜索;
S7、将EHID作为DOL_MAG接口的返回值,通过调用方WebApp返回给DOL_WEB。
5、DOL_WEB在成功获取EHID之后对浏览器环境进行检测。
S1、通过js引擎检测navigator.mimeTypes列表是否存在,假如存在列表中是否包括"application/pdf"类型,假如存在选择PDF模式;
S2、通过js检测ActiveX组件,采用兼容IE11的检测方式,if(window.ActiveXObject||"ActiveXObject"in window);
S3、假如支持ActiveXObject,则检测是否已经安装PDF阅读器,检测依据为判断new ActiveXObject("AcroPDF.PDF")是否执行成功,假如执行成功则选择PDF模式。
6、通过AJAX向DOL_MAG接口提交指定的EHID对应的文档转换请求,附加参数是否s1-s3过程中是否支持PDF的检测结果。
7、DOL_MAG对请求的文档进行转换。
S1、检测请求的EHID和DOL_EH状态是否正确;
S2、根据浏览器参数检测结果,假如支持PDF则转换为PDF文件,否则转换为一批图片文件(比如JPG或PNG)。转换过程可以根据微软开源的OFFICE文档格式进行解析转换,也可以采用包括但不限于Apache POI、Aspose、Apache PDFBox、OFFICE ActiveX组件等第三方文档处理组件进行转换。对转换结果的文件数据流进行缓存,包括但不限于内存缓存、磁盘文件缓存、数据库缓存的方式;
S3、标识DOL_EH数据块状态为“已转换”,并将转换类型、转换缓存数据引用记入DOL_EH中,数据块更新序列追加1,时间戳记入当前时间;
S4、将转换文件的结果转换成URL地址。
8、将包含PDF或者图片序列的URL地址采用格式化文本返回给DOL_WEB端。
9、DOL_WEB获取到转换结果后,对本地编辑工具进行检测。
S1、通过script标签,导入本地编辑器检测脚本;
比如<script src=’http://localhost:9654/check?callback=’></script>;
上面举例中的地址仅仅作为文档说明使用,并不代表固定地址,该web服务器地址是当前计算机本地地址,由在线编辑客户端安装时候包含的DOL_SVC服务提供,该服务为windows服务,随计算机自动启动;
S2、DOL_SVC接收到请求的时候根据约定,回调函数执行语句的script,用来表明本地是否已经安装编辑工具。
比如callback=callDolEditingEabled,那么返回如下script脚本window.callDolEditingEabled();
本代码仅仅是逻辑上的示例,不代表固定写法。通过script注入的方式可以不受到跨域访问的限制,文档后续说明中所有DOL_WEB与DOL_SVC的交互都采用这种方式进行。
10、DOL_WEB根据返回结果在WebUI提供的容器中生成展示用的UI。
S1、假如是PDF模式,那么使用嵌套的OBJECT和EMBED标签;
S2、假如不支持PDF,那么使用IMG标签进行图片的展示;
S3、假如DOL_SVC脚本检测成功,那么UI上提供编辑操作功能,否则禁用编辑功能;
S4、将阅读模式的加载结果汇报给WebUI。
在线编辑处理流程分为三部分:启动编辑、进行编辑和保存编辑结果;其中,启动流程如图2所示,包括:
1、阅读加载流程中,通过(阅读9)环节的检测机制来确定本地编辑客户端是否已经正确安装,(阅读10/s9)环节中已经通知WebUI当前文档是否可以支持编辑。这时候通过包括但不限于用户使用编辑按钮、Web程序自动打开等方式向DOL_WEB组件发起编辑请求。
2、DOL_WEB组件接收到编辑请求后,向本地DOL_SVC发起编辑请求。
S1、DOL_WEB进行变量初始化,将包括Web服务器地址、EHID、当前用户会话ID格式化文本打包。打包方式包括但不限于JSON、XML,特殊字符分割等各类格式化文本方案。
S2、将参数包合并进DOL_SVC地址中,比如
http://localhost:9654/startEdit?callback=...&args=...
该技术方案同(阅读9/S1S2)说明。
3、DOL_SVC通过检测当前桌面环境来确定是否直接启动DOL_APP。因为windows操作系统是个多用户环境,在一些特定的windows版本或通过设置,windows允许多个用户同时登陆并使用桌面环境。由于DOL_WEB的编辑操作由网页发起,在多个用户同时使用桌面的情况下,DOL_SVC作为windows服务运行在独立的无交互(noninteractive)Window StationSession中,无法确定是哪个Session的Web发起的启动请求,所以DOL_SVC通过对桌面环境的检测,有且只有单一可交互的Window Station Session激活的情况下才直接启动DOL_APP。
S1、通过WTSEnumerateSessions获取所有Session,并过滤状态为WTSActive的Session,假如Session数不唯一则取消启动。
S2、通过OpenProcessToken获得当前进程的用户Token。
S3、通过AdjustTokenPrivileges为用户Token增加SeTcbPrivilege权限。
S4、通过WTSQueryUserToken获取交互式Session的用户Token。
S5、通过CreateProcessAsUser来在指定Session上启动DOL_APP进程,启动过程中传递DOL_WEB传递的参数。
4、DOL_SVC将启动结果通过script返回给DOL_WEB,通过第二步骤的回调参数来通知DOL_WEB,传递是否正确启动DOL_APP的信息。
5、DOL_SVC假如未能成功启动DOL_APP,DOL_WEB将尝试进行URL方式启动,URL方式使用了Windows提供的自定义协议功能。比如dol://args,该链接不代表具体的连接格式只作为举例说明,自定义协议是在客户端安装过程中按照微软的标准通过在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Classes路径下添加对应的协议前缀。步骤2中的格式化文本会作为协议的参数进行传递。DOL_WEB创建隐藏的iframe组件,该iframe指向dol://对应的自定义协议。
6、DOL_WEB向DOL_MAG创建状态跟踪器,用来跟踪文档编辑的状态,状态跟踪器采用包括但不限于Ajax轮询、Ajax长连接,flash/Silverlight桥接的tcp连接,websocket连接。DOL_MAG状态服务将跟踪指定DOL_EH数据块的状态变化情况,并通知DOL_WEB客户端。
S1、DOL_WEB向DOL_MAG创建状态跟踪连接;
S2、DOL_WEB通知WebApp当前处于等待启动的状态,WebUI可更新网页UI;
S3、DOL_WEB初始化计时器对状态跟踪器进行计时;
S4、在预定时间内,假如状态跟踪器没有汇报编辑状态的更新的事件,则认为此次编辑启动失败;
S5、状态跟踪器汇报进入编辑状态,DOL_WEB向WebUI通知编辑成功启动,WebUI可更新网页UI;
S6、DOL_WEB通过JS创建浏览器关闭事件(window.onunload)监听器,用来跟踪浏览器的关闭事件。在浏览器监听器发现浏览器正在关闭的情况,或者WebUI通过DOL_WEB组件主动发起关闭文档的情况下,DOL_WEB将向DOL_MAG通过同步AJAX的方式请求取消这次编辑操作。
7、DOL_APP启动后首先向DOL_MAG请求文档数据,DOL_MAG服务器的地址和请求的DOL_EHID、会话ID等包含在步骤2打包的参数中,通过DOL_SVC或者通过DOL_WEB的URL协议传递给DOL_APP,DOL_APP通过HTTP连接将相关参数传递给DOL_MAG。
8、DOL_MAG接收到DOL_APP的请求后,返回有效的原始文档数据流。
S1、对参数中的会话ID、EHID进行安全性和有效性验证;
S2、更新EHID对应的DOL_EH数据块,DOL_EH的编辑状态设置为“编辑中”,数据块更新序列追加1,时间戳记入当前时间。更新序列的变化将同步通知步骤6中的创建的状态跟踪器;
S3、获取DOL_EH数据块中对应的源文档引用的数据流。
9、将文档标题、操作人名、文件名、原始文件返回给DOL_APP。返回过程可以包括但不限于使用格式化文本(数据流采用BASE64编码与文档信息一次性返回),多阶段返回(文档信息和文档数据流分两次返回)等方式。
编辑流程如图3所示,包括:
1、DOL_APP将从启动流程中从DOL_MAG获取的文档数据流存入本地临时文件夹。
2、DOL_APP向DOL_MAG创建状态跟踪器连接,用来跟踪DOL_MAG的事件信息。
S1、DOL_APP使用启动参数中的服务器地址信息,异步向DOL_MAG发起长连接请求,连接方式与(启动流程6)兼容,可以采用包括但不限于HTTP长连接、HTTP轮询,WebSocket协议等方式。连接过程中提交相关EHID和会话ID等信息。
S2、DOL_APP异步等待DOL_MAG的数据包信息。
S3、(启动流程6/S6)中DOL_WEB向DOL_MAG主动发起取消编辑的请求后。DOL_MAG同时会使用DOL_APP的状态跟踪器来要求DOL_APP取消编辑操作。
3、检测当前操作系统环境下是否存在WPS或者OFFICE相关文档编辑软件。
S1、检查当前文档的类型,是Excel文档还是Word文档。
S2、使用CLSIDFromProgID进行安装检测,Word文档依次检测Word.Application和KWPS.Application。Excel依次检测Excel.Application和KET.Application。
4、假如步骤3的环境检测失败,则向DOL_MAG请求结束编辑操作。
S1、创建通过兼容DOL_MAG服务的连接,提交EHID和取消编辑的标识参数和取消原因参数。
S2、结束状态跟踪器,DOL_APP进程退出。
5、DOL_MAG接收到DOL_APP的取消编辑的请求后通知DOL_WEB结束编辑。
S1、检测DOL_APP提交的EHID有效性;
S2、更新EHID对应的DOL_EH,编辑状态设置为“取消编辑”数据块更新序列追加1,时间戳记入当前时间。更新序列的变化将同步通知DOL_WEB创建的状态跟踪器;
S3、DOL_WEB通过状态跟踪器的到取消编辑的请求后,结束状态跟踪器,通知WebUI更新交互界面。
6、DOL_APP创建本地编辑器应用对象。进入文件编辑状态。
S1、初始化COM组件环境,创建(步骤3)的检测中符合文档格式的Application对象,为了兼顾不同版本的兼容性问题,所有COM组件操作采用IDispatch后期绑定调用。
S2、使用Application打开存放在临时文件夹下的文件。
S3、根据DOL_APP的启动参数设置文档标题(Caption)和当前操作人信息(UserName、UserInitials)。
S4、使用IConnectionPointContainer技术,向文档对象创建订阅关闭跟踪事件。
S5、通过AttachThreadInput和BringWindowToTop,将当前的编辑器窗口前置。
保存流程如图4所示,包括:
1、在(编辑流程6/S4)中,向Application对象注册了文档关闭事件连接点,在用户关闭当前正在编辑的文档时,DOL_APP会收到响应的通知。
2、DOL_APP接收到关闭事件通知时由于文档本身实际上并没有完全关闭,考虑到文档编辑器还可能存在其他插件需要做收尾清理工作,所以在获取文档数据前创建文件状态跟踪器来等待文档完全关闭。
S1、COM的事件连接点是单线程执行,在收到文档关闭事件后不能阻碍连接点的继续执行,所以创建新额跟踪线程。
S2、跟踪线程使用系统文件操作函数,尝试以独占方式打开文档的临时文件。假如打开失败,进行短时间的线程睡眠(Sleep),继续尝试打开,直到文件打开成功。
3、文件关闭后,使用兼容DOL_MAG的数据连接,提交包括EHID和新文档的二进制流。提交完成之后,DOL_APP退出进程。
4、DOL_MAG获得新的文件留后,更新DOL_EH相关信息,并通知DOL_WEB。
S1、检测提交的EHID的有效性;
S2、将新文档数据放入缓存中(与阅读流程4/S2相同);
S3、更新对应的DOL_EH,更新源文件数据引用,标识DOL_EH数据块状态为“已加载”,数据块更新序列追加1,时间戳记入当前时间。
S4、通过DOL_WEB的状态跟踪器通知DOL_WEB文件已经更新。
后续流程让DOL_WEB重新加载阅读文档,与阅读流程相同。
以上说明书中描述的只是本发明的具体实施方式,各种举例说明不对本发明的实质内容构成限制,所属技术领域的普通技术人员在阅读了说明书后可以对以前所述的具体实施方式做修改或变形,而不背离本发明的实质和范围。
Claims (9)
1.一种在线阅读和编辑文档的实现方法,其特征在于:包括在线阅读处理方式和在线编辑处理方式;
所述的在线阅读处理方式包括以下步骤:
1)发起阅读请求,配置服务器文档源信息;并根据目标文档信息相服务器发起阅读请求;
2)WebApp从文件库读取现有的文档或空白文档模板二进制流将数据提交DOL_MAG创建编辑句柄;
3)返回DOL_EH的句柄编号EHID;
4)检测浏览器环境判断浏览器是否支持PDF组件;根据浏览器环境检测结果使用DOL_EHID向MAG提交文档转换请求;
5)根据请求类型的不同将文档转换为单个PDF或者多个JPG图片;
6)返回PDF文件web地址或者JPG文件web地址列表;
7)向DOL_SVC发起客户端程序检测;
8)将阅读信息河发送给WebUI进行展示并向WebUI进行汇报;
所述的在线编辑处理方式包括以下三个步骤:启动编辑步骤、进行编辑步骤以及保存编辑结果步骤;
其中,
启动编辑步骤包括:DOL_WEB组件接收到编辑请求后,向本地DOL_SVC发起编辑请求;DOL_SVC通过检测当前桌面环境来确定是否直接启动DOL_APP;DOL_APP启动后向DOL_MAG请求文档数据;DOL_MAG接收到DOL_APP的请求后,准备文档数据流进入编辑状态并返回有效的原始文档数据流和文档信息;
进行编辑步骤包括:将文档文件保存在本地临时目录;检测文档编辑器环境同时创建状态跟踪器;创建文档编辑器Application对象初始化相关参数和事件打开文档进行编辑;
保存编辑结果步骤包括:DOL_APP收到关闭文档通知后,在获取文档数据前创建文件状态跟踪器;提交最新的文件数据流并通知DOL_WEB;DOL_WEB重新加载阅读文档。
2.如权利要求1所述的一种在线阅读和编辑文档的实现方法,其特征在于:在线阅读处理方式中,DOL_MAG根据文件流和文件名信息创建DOL_EH;包括以下步骤:
S1、校验文件流和文件名的匹配性,检查文件流的有效性;
S2、将文件缓存在DOL_MAG文件管理区域,包括内存缓存、磁盘文件缓存、数据库缓存的方式;
S3、创建DOL_EH数据块,EH信息中包含管理和跟踪编辑流程中的整个数据信息;
S4、生成EHID,EHID的生成采用非连续性的随机序号,使用包括SnowFake、GUID算法来生成;
S5、初始化DOL_EH的原始文档信息,初始化编辑状态为“已加载”,更新序列为0,时间戳记入当前时间;
S6、将DOL_EH数据块并放入缓存区域,包括内存缓存、磁盘文件缓存、数据库缓存的方式,同时对EHID进行有序索引化处理用于快速搜索;
S7、将EHID作为DOL_MAG接口的返回值,通过调用方WebApp返回给DOL_WEB。
3.如权利要求1所述的一种在线阅读和编辑文档的实现方法,其特征在于:在线阅读处理方式中,业务程序前段WebUI根据业务要求,在需要展示文档阅读的网页中向DOL前段组件DOL_WEB发起文档阅读初始化,包括以下步骤:
S1、业务前段WebUI导入DOL_WEB的JS脚本库;
S2、业务前段WebUI准备好于业务后端兼容的文件信息参数,业务后端WebApp通过该参数与具体的文件数据相关联;
S3、配置业务后端WebApp处理程序的地址参数;
S4、配置文档展示区域参数,包括使用HTML Element Id、HTML Element Object、CSS选择器表明展示容器的方法;
S5、将参数传递给DOL_WEB前段脚本库。
4.如权利要求1所述的一种在线阅读和编辑文档的实现方法,其特征在于:启动编辑步骤中,DOL_SVC通过对桌面环境的检测,有且只有单一可交互的Window Station Session激活的情况下才直接启动DOL_APP。
5.如权利要求4所述的一种在线阅读和编辑文档的实现方法,其特征在于:DOL_SVC未能成功启动DOL_APP,DOL_WEB将尝试进行URL方式启动,URL方式使用了Windows提供的自定义协议功能。
6.如权利要求1所述的一种在线阅读和编辑文档的实现方法,其特征在于:进行编辑步骤中,检测当前操作系统环境下是否存在WPS或者OFFICE相关文档编辑软件;若环境检测失败,则向DOL_MAG请求结束编辑操作;DOL_MAG接收到DOL_APP的取消编辑的请求后通知DOL_WEB结束编辑。
7.如权利要求1所述的一种在线阅读和编辑文档的实现方法,其特征在于:进行编辑步骤中,DOL_APP创建本地编辑器应用对象,进入文件编辑状态;包括:
S1、初始化COM组件环境,创建符合文档格式的Application对象,为了兼顾不同版本的兼容性问题,所有COM组件操作采用IDispatch后期绑定调用;
S2、使用Application打开存放在临时文件夹下的文件;
S3、根据DOL_APP的启动参数设置文档标题和当前操作人信息;
S4、向文档对象创建订阅关闭跟踪事件;
S5、通过AttachThreadInput和BringWindowToTop,将当前的编辑器窗口前置。
8.如权利要求1所述的一种在线阅读和编辑文档的实现方法,其特征在于:保存编辑结果步骤中,文件关闭后,使用兼容DOL_MAG的数据连接,提交包括EHID和新文档的二进制流;提交完成之后,DOL_APP退出进程。
9.如权利要求1所述的一种在线阅读和编辑文档的实现方法,其特征在于:DOL_MAG获得新的文件留后,更新DOL_EH相关信息,并通知DOL_WEB;DOL_WEB重新加载阅读文档,与阅读流程相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711220560.8A CN107734074B (zh) | 2017-11-29 | 2017-11-29 | 一种在线阅读和编辑文档的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711220560.8A CN107734074B (zh) | 2017-11-29 | 2017-11-29 | 一种在线阅读和编辑文档的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107734074A true CN107734074A (zh) | 2018-02-23 |
CN107734074B CN107734074B (zh) | 2020-06-12 |
Family
ID=61218825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711220560.8A Expired - Fee Related CN107734074B (zh) | 2017-11-29 | 2017-11-29 | 一种在线阅读和编辑文档的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107734074B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117283A (zh) * | 2018-07-20 | 2019-01-01 | 江苏中育优教科技发展有限公司 | 一种网络环境下遥控wps软件的方法 |
CN109408783A (zh) * | 2018-09-06 | 2019-03-01 | 广州城市信息研究所有限公司 | 电子文档在线编辑方法及系统 |
CN110347990A (zh) * | 2019-07-05 | 2019-10-18 | 科大国创软件股份有限公司 | 一种Web在线文档编辑方法及其系统 |
CN110471716A (zh) * | 2019-08-20 | 2019-11-19 | 江西金格科技股份有限公司 | 在OA系统中非嵌入式使用Office的方法 |
CN110516223A (zh) * | 2019-09-03 | 2019-11-29 | 上海挚极信息科技有限公司 | 一种在线检测试验数据采集模板信息化系统及其操作方法 |
CN110674619A (zh) * | 2019-09-18 | 2020-01-10 | 北京达佳互联信息技术有限公司 | 一种在线文档编辑方法、装置、设备及计算机存储介质 |
CN110705209A (zh) * | 2019-09-29 | 2020-01-17 | 武汉海昌信息技术有限公司 | 一种在线修改稿件的方法及其系统 |
CN111309676A (zh) * | 2020-01-20 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 文件加载方法、装置、存储介质及电子设备 |
CN112395833A (zh) * | 2020-10-09 | 2021-02-23 | 贵州电网有限责任公司 | 一种异构源文档静态化html处理方法 |
CN112632917A (zh) * | 2019-10-14 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 在线文档处理方法、装置、电子设备以及存储介质 |
CN112667944A (zh) * | 2020-12-23 | 2021-04-16 | 福建正孚软件有限公司 | 一种基于http协议的文件在线处理方法和系统 |
CN113420530A (zh) * | 2021-06-30 | 2021-09-21 | 北京优奥创思科技发展有限公司 | 一种文件在线预览方法和系统 |
CN115102938A (zh) * | 2022-05-16 | 2022-09-23 | 中国航空工业集团公司西安飞行自动控制研究所 | 基于http协议的多人并发文件生成动态信息推送方法及系统 |
CN115237863A (zh) * | 2022-09-22 | 2022-10-25 | 中建电子商务有限责任公司 | 一种基于wps加载项的excel数据导入方法 |
CN115858685A (zh) * | 2023-02-14 | 2023-03-28 | 青岛中科方德软件有限公司 | 需求文件的在线同步方法和装置、终端、可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976268A (zh) * | 2010-11-19 | 2011-02-16 | 百度在线网络技术(北京)有限公司 | 一种在线文档阅读装置及方法 |
US20120221568A1 (en) * | 2004-03-29 | 2012-08-30 | Google Inc. | Variable Personalization of Search Results in a Search Engine |
CN102880595A (zh) * | 2012-08-22 | 2013-01-16 | 东莞宇龙通信科技有限公司 | 一种提供在线阅读的系统和方法 |
CN102982119A (zh) * | 2012-11-12 | 2013-03-20 | 上海够快网络科技有限公司 | 一种在线文件的编辑方法 |
CN103092819A (zh) * | 2011-10-27 | 2013-05-08 | 镇江雅迅软件有限责任公司 | 基于activex控件的文档在线阅读及编辑装置 |
CN104572870A (zh) * | 2014-12-22 | 2015-04-29 | 北京京东尚科信息技术有限公司 | 提供文档在线阅读的方法和装置以及系统 |
CN105743973A (zh) * | 2016-01-22 | 2016-07-06 | 上海科牛信息科技有限公司 | 一种多人多设备实时同步云协作方法及系统 |
-
2017
- 2017-11-29 CN CN201711220560.8A patent/CN107734074B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120221568A1 (en) * | 2004-03-29 | 2012-08-30 | Google Inc. | Variable Personalization of Search Results in a Search Engine |
CN101976268A (zh) * | 2010-11-19 | 2011-02-16 | 百度在线网络技术(北京)有限公司 | 一种在线文档阅读装置及方法 |
CN103092819A (zh) * | 2011-10-27 | 2013-05-08 | 镇江雅迅软件有限责任公司 | 基于activex控件的文档在线阅读及编辑装置 |
CN102880595A (zh) * | 2012-08-22 | 2013-01-16 | 东莞宇龙通信科技有限公司 | 一种提供在线阅读的系统和方法 |
CN102982119A (zh) * | 2012-11-12 | 2013-03-20 | 上海够快网络科技有限公司 | 一种在线文件的编辑方法 |
CN104572870A (zh) * | 2014-12-22 | 2015-04-29 | 北京京东尚科信息技术有限公司 | 提供文档在线阅读的方法和装置以及系统 |
CN105743973A (zh) * | 2016-01-22 | 2016-07-06 | 上海科牛信息科技有限公司 | 一种多人多设备实时同步云协作方法及系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117283A (zh) * | 2018-07-20 | 2019-01-01 | 江苏中育优教科技发展有限公司 | 一种网络环境下遥控wps软件的方法 |
CN109408783A (zh) * | 2018-09-06 | 2019-03-01 | 广州城市信息研究所有限公司 | 电子文档在线编辑方法及系统 |
CN110347990A (zh) * | 2019-07-05 | 2019-10-18 | 科大国创软件股份有限公司 | 一种Web在线文档编辑方法及其系统 |
CN110471716A (zh) * | 2019-08-20 | 2019-11-19 | 江西金格科技股份有限公司 | 在OA系统中非嵌入式使用Office的方法 |
CN110516223A (zh) * | 2019-09-03 | 2019-11-29 | 上海挚极信息科技有限公司 | 一种在线检测试验数据采集模板信息化系统及其操作方法 |
CN110674619B (zh) * | 2019-09-18 | 2023-10-17 | 北京达佳互联信息技术有限公司 | 一种在线文档编辑方法、装置、设备及计算机存储介质 |
CN110674619A (zh) * | 2019-09-18 | 2020-01-10 | 北京达佳互联信息技术有限公司 | 一种在线文档编辑方法、装置、设备及计算机存储介质 |
CN110705209A (zh) * | 2019-09-29 | 2020-01-17 | 武汉海昌信息技术有限公司 | 一种在线修改稿件的方法及其系统 |
CN112632917A (zh) * | 2019-10-14 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 在线文档处理方法、装置、电子设备以及存储介质 |
CN111309676A (zh) * | 2020-01-20 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 文件加载方法、装置、存储介质及电子设备 |
CN112395833A (zh) * | 2020-10-09 | 2021-02-23 | 贵州电网有限责任公司 | 一种异构源文档静态化html处理方法 |
CN112667944A (zh) * | 2020-12-23 | 2021-04-16 | 福建正孚软件有限公司 | 一种基于http协议的文件在线处理方法和系统 |
CN113420530A (zh) * | 2021-06-30 | 2021-09-21 | 北京优奥创思科技发展有限公司 | 一种文件在线预览方法和系统 |
CN115102938A (zh) * | 2022-05-16 | 2022-09-23 | 中国航空工业集团公司西安飞行自动控制研究所 | 基于http协议的多人并发文件生成动态信息推送方法及系统 |
CN115237863A (zh) * | 2022-09-22 | 2022-10-25 | 中建电子商务有限责任公司 | 一种基于wps加载项的excel数据导入方法 |
CN115858685A (zh) * | 2023-02-14 | 2023-03-28 | 青岛中科方德软件有限公司 | 需求文件的在线同步方法和装置、终端、可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107734074B (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107734074A (zh) | 一种在线阅读和编辑文档的实现方法 | |
US11030268B2 (en) | Processing tree structure having breadcrumb root node | |
CN106254423B (zh) | 基于微服务架构实现Restful服务快速发布的方法 | |
US20100082747A1 (en) | Real-time collaborative browsing | |
JP4857349B2 (ja) | ポータル・システム内で非同期ポータル・ページを提供するための方法、システム、およびコンピュータ・プログラム | |
CN104063460B (zh) | 一种在浏览器中加载网页的方法和装置 | |
CN101211364B (zh) | 用于万维网页中暴露的资源的公共书签的方法和系统 | |
US8510371B2 (en) | Method and system for creating IT-oriented server-based web applications | |
CN105045887B (zh) | 混合模式跨域数据交互的系统及其方法 | |
US9459888B2 (en) | Implementing browser based hypertext transfer protocol session storage | |
CN108228282A (zh) | 用于网站页面加载的方法及装置 | |
US20030154289A1 (en) | Methods of interacting with distributed information networks | |
CN106484383A (zh) | 页面渲染方法、装置及设备 | |
US20090063968A1 (en) | Replaying captured network interactions | |
US20090144451A1 (en) | Synchronization of locally and remotely stored browser data | |
TW200822649A (en) | Estimation of initial dynamic rendering control data | |
EP1811747A1 (en) | Method and apparatus for storing and restoring state information of remote user interface | |
CN101369272A (zh) | 一种自动填充系统及自动填充注册或登录信息的方法 | |
CN103024038B (zh) | 用于浏览网页的方法及装置 | |
US20080281754A1 (en) | Systems and methods for facilitating affiliate-based transactions | |
US20020078140A1 (en) | Remote web page maintenance | |
US20130185322A1 (en) | Systems and methods for providing an electronic contact card | |
CN109815430A (zh) | 请求处理方法、装置、数据处理服务器及可读存储介质 | |
CN103577526A (zh) | 一种验证页面是否被修改的方法、系统及浏览器 | |
CN105095220B (zh) | 一种浏览器实现方法、终端和虚拟化代理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200612 Termination date: 20211129 |
|
CF01 | Termination of patent right due to non-payment of annual fee |