具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
在现有的电子文件格式中,由于具有开放性和跨平台特性,PDF(Portable Document Format,可移植文档格式)已经成为电子文件存储格式的首选,在互联网的电子文件交换应用中,已经成为事实标准,PDF格式支持的分层技术,使得PDF能够方便地添加水印和进行水印的控制,PDF支持的安全性控制可以方便地实现对文本拷贝、打印等控制。由于PDF的广泛使用,由PDF的开发厂商提供的PDF浏览程序Acrobat Reader的普及率非常高,广义的AcrobatReader,包括Adobe Acrobat系列产品,由于Acrobat和AcrobatReader在本发明中起到的作用都是浏览PDF的浏览程序,在后面的陈述中,对Acrobat和Acrobat Reader不作明确区分。
图1示出了根据本发明一个实施例的电子文件在线浏览方法流程图,包括以下步骤:
S102,通过服务器接受客户端对电子文件的访问请求,并对访问请求进行解析;
S104,如果解析出电子文件的格式不是PDF格式,实时地将电子文件转换为PDF文件;
S106,将带翻页和/或跳页控制的WEB页面输出到客户端;
S108,通过客户端向服务器端发出访问指定页码或页码范围的请求;
S110,根据所述客户端请求的所述指定页码或页码范围,通过所述服务器端将所述PDF文件中所述指定页码或页码范围的相应页输出到所述客户端。
在本实施例中,通过实时地将非PDF格式的电子文件转换为PDF文件,并输出带翻页和/或跳页控制的WEB页面,该页面通过客户端请求访问PDF文件的首页,从而将PDF文件的首页发送到客户端,并进而根据客户端指定的页码或页码范围将PDF文件的相应页输出到客户端,避免了一次性地传输整个电子文件到客户端,提高了电子文件的浏览性能,克服了现有技术中在线浏览时是将文件完整传输到客户端,尤其是针对一些较大的电子文件(如上千页),导致在线浏览的性能较低的问题。
同时,本实施例通过将非PDF格式的电子文件实时地转换为PDF文件,并根据客户端请求的页码范围,将PDF文件的相应页码输出到WEB页面,使得用户可以通过Acrobat Reader实时浏览电子文件,而不需要为其他格式的电子文件专门安装浏览软件,提高了系统的开放性,克服了现有技术中无论是采用针对文件格式的浏览器或使用多格式浏览器,都需要在客户端安装一些特定的浏览程序,这些程序本身并不是开放的,导致系统的开放性较低的问题。
此外,在本实施例中,只需要存储原始电子文件,在客户端发起访问请求时,实时地将非PDF格式的文件转换为PDF文件,节省了存储空间,克服了现有技术中为保证文件的原始性,系统必须保存原始文件和格式转换后的文件,需要较大的存储空间的问题。
优选地,在上述电子文件在线浏览方法中,在根据客户端请求的页码范围,将PDF文件的相应页码输出到客户端之前还包括以下步骤:如果解析出需要对电子文件设置禁止文本拷贝或打印,对PDF文件的指定页码或页码范围的相应页进行加密。在本实施例中,对抽取出来的PDF文件的相应页码根据权限参数(是否允许客户端从PDF中拷贝文本、是否允许客户端打印PDF)进行加密,提高了电子文件的安全性,同时,避免了对整个电子文件一次性地加密,提高了电子文件的浏览性能。
优选地,在上述电子文件在线浏览方法中,在根据客户端请求的页码范围,将PDF文件的相应页输出到客户端之前还包括以下步骤:如果解析出需要对电子文件设置打印水印和/或查看水印,对PDF文件的指定页码或页码范围的相应页添加水印,并设置水印的相应参数。在本实施例中,对抽取出来的PDF文件的相应页根据水印参数(查看时是否包含水印、打印时是否包含水印)进行添加水印,例如,利用PDF分层技术对客户端指定的页码添加水印,避免了对整个电子文件一次性地添加水印,提高了电子文件的浏览性能。
优选地,上述电子文件在线浏览方法,还包括以下步骤:如果解析出需要禁止对电子文件的保存,通过Windows WH_CBT Hook控制客户端对PDF文件的指定页码或页码范围的相应页的保存操作。在本实施例中,根据是否允许客户端另存嵌入PDF文件保存控制模块,如果不允许客户端另存,则嵌入该模块,否则不嵌入该模块。
优选地,在上述电子文件在线浏览方法中,客户端是网络浏览器,如Internet Explorer或Firefox等浏览器,用于接收WEB页面,并根据客户端脚本向后台发出访问当前文件的首页的请求。
图2示出了根据本发明一个实施例的电子文件在线浏览系统模块图,包括:
访问请求解析模块10,用于解析服务器接收的来自客户端的访问请求,得到对访问请求的解析结果,并根据解析结果定位电子文件;
格式转换模块20,用于将非PDF格式的电子文件实时地转换为PDF文件;
页面输出模块30,用于将带翻页和/或跳页控制的WEB页面输出到客户端;
页面请求模块40,用于通过客户端向服务器端发出访问指定页码或页码范围的请求;
页面抽取模块50,用于根据客户端请求的指定页码或页码范围,通过服务器端将PDF文件中指定页码或页码范围的相应页输出到客户端。
在本实施例中,通过实时地将非PDF格式的电子文件转换为PDF文件,并输出带翻页和/或跳页控制的WEB页面,该页面通过客户端请求访问PDF文件的首页,从而将PDF文件的首页发送到客户端,并进而根据客户端指定的页码或页码范围将PDF文件的相应页输出到客户端,避免了一次性地传输整个电子文件到客户端,提高了电子文件的浏览性能,克服了现有技术中在线浏览时是将文件完整传输到客户端,尤其是针对一些较大的电子文件(如上千页),导致在线浏览的性能较低的问题。
同时,在本实施例中,通过将非PDF格式的电子文件实时地转换为PDF文件,并根据客户端请求的页码范围,将PDF文件的相应页输出到客户端,使得用户可以通过Acrobat Reader实时浏览电子文件,而不需要为其他格式的电子文件专门安装浏览软件,提高了系统的开放性,克服了现有技术中无论是采用针对文件格式的浏览器或使用多格式浏览器,都需要在客户端安装一些特定的浏览程序,这些程序本身并不是开放的,导致系统的开放性较低的问题。
此外,在本实施例中,只需要存储原始电子文件,在客户端发起访问请求时,实时地将非PDF格式的文件转换为PDF文件,节省了存储空间,克服了现有技术中为保证文件的原始性,系统必须保存原始文件和格式转换后的文件,需要较大的存储空间的问题。
格式转换模块根据请求URL对应的电子文件名扩展名调用相应的格式转换工具,将原始文件格式转换为PDF(生成的PDF可以保存在内存中,也可以保存在硬盘中),为优化性能,可以将转换后的PDF缓存以备下次使用。
例如上述的PDF转换工具可以是PDF开发包(如PDF LIB、iText)或文件编辑软件自带的输出PDF功能(如:Office 2007内另存为PDF)或虚拟打印(如:Adobe PDF)。
同时,利用Acrobat Reader的插件机制,可以将操作功能和PDF显示集成在一个页面中,因此,该页面内包含操作区(用户通过访问该区域的翻页或跳页操作功能,实现文件的翻页或跳页)和PDF显示区,并生成自动向后台请求访问当前文件的首页的客户端脚本。
优选地,上述电子文件在线浏览系统还包括:加密模块,用于当解析出需要对电子文件禁止文本拷贝或打印时,对PDF文件的指定页码或页码范围的相应页进行加密。在本实施例中,对抽取出来的PDF文件的相应页根据权限参数(是否允许客户端从PDF中拷贝文本、是否允许客户端打印PDF)进行加密,提高了电子文件的安全性,同时,避免了对整个电子文件一次性地加密,提高了电子文件的浏览性能。
优选地,上述电子文件在线浏览系统还包括:水印模块,用于当解析出需要对电子文件设置打印水印和/或查看水印时,对PDF文件的指定页码或页码范围的相应页添加水印。在本实施例中,对抽取出来的PDF文件的相应页根据水印参数(查看时是否包含水印、打印时是否包含水印)进行添加水印,例如,利用PDF分层技术对客户端指定的页码添加水印,避免了对整个电子文件一次性地添加水印,提高了电子文件的浏览性能。
优选地,上述电子文件在线浏览系统还包括:保存控制模块,用于控制客户端对PDF文件的指定页码或页码范围的相应页的保存操作。在本实施例中,根据是否允许客户端另存嵌入PDF文件保存控制模块,如果不允许客户端另存,则嵌入该模块,否则不嵌入该模块。
例如,PDF文件保存控制模块是一个ActiveX组件,该组件是利用Windows WH_CBT Hook实现禁止Acrobat Reader文件的保存副本功能,使用该类型的Hook的原因是因为Acrobat Reader的保存副本功能需要弹出一个保存文件的对话框,通过WH_CBT Hook可以截获该窗口的创建消息,并修改该消息的响应,使该窗口无法创建即可。具体过程如下:
当PDF文件保存控制模块启动后,会开启新线程不断的检测类名是AcrobatSDIWindow(Acrobat Reader的主窗口的类名)和AdobeAcrobat(Adobe Acrobat的主窗口的类名)窗口句柄是不是存在,如果存在,根据类名获得其线程;利用WH_CBT hook,截获窗口创建的消息,将hook处理函数注入该线程,注入方法是使用SDK函数SetWindowsHookEx;拦截到窗口创建的消息后,判断创建窗口类型和窗口标题,如果窗口类型是对话框,而且窗体的标题“保存”,“另存为”,“save as...”等,说明正在创建的窗口是保存文件对话框,hook处理函数截断消息的传递,此时保存文件对话框无法正常创建,保存操作就被屏蔽,如果窗口类型和窗口标题不是指定的内容,就把消息继续传递下去,保证其他功能的正常运行;当页面关闭时,就卸载钩子(UnhookWindowsHookEx),这样就不影响其他Acrobat Reader实例的正常保存。
优选地,在上述电子文件在线浏览系统中,客户端是网络浏览器,如Internet Explorer或Firefox等浏览器,用于接收WEB页面,并在首次访问电子文件时根据客户端脚本向后台发出访问当前文件的首页的请求。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。