一种打印浏览器内容的方法和装置与流程

文档序号:27049755发布日期:2021-10-24 07:42阅读:90来源:国知局
一种打印浏览器内容的方法和装置与流程

1.本技术涉及计算机技术领域,尤其涉及一种打印浏览器内容的方法和装置。


背景技术:

2.随着计算机技术的不断发展,用户可以通过浏览器访问自己感兴趣的网站。通过该网站浏览自己感兴趣的网页内容,该网页内容可以是图片、文档资料、新闻资讯等,当用户需要打印这些网页内容时,需要借助本地打印机进行打印。通常情况下,技术人员通过在页面中嵌入可实现打印功能的插件,比如,activex、applet、和com等,来调用本地打印机以实现网页内容的打印。但是,这种通过在页面中嵌入各种插件来实现打印的方式只能适用部分浏览器,比如,ie浏览器,而对某些浏览器不支持。
3.因此,如何实现跨浏览器打印是当前急需解决的问题。


技术实现要素:

4.本技术提供了一种打印浏览器内容的方法和装置,能够实现跨浏览器打印。
5.第一方面,提供了一种打印浏览器内容的方法,包括:通过接收容器监听客户端的端口;从所述端口接收第一浏览器的第一打印请求和第一打印数据;根据所述第一打印请求调用第一打印处理器打印所述第一打印数据。
6.上述方法可以由终端设备上的打印模块执行。打印模块通过接收容器监听客户端(比如,电脑)的端口,等待客户端发送第一打印请求和第一打印数据,该接收容器可以通过监听客户端的端口接收客户端的任何浏览器发送过来的第一打印请求和第一打印数据,而不受浏览器类型的影响,以实现跨浏览器打印的功能。
7.可选地,所述接收容器为httpserver容器,所述端口包括http端口和https端口。
8.httpserver容器的http端口能够接收一部分站点(即网站)通过http协议发送的第一打印请求和第一打印数据,而httpserver容器的https端口能够接收另一部分站点通过https协议发送的第一打印请求和第一打印数据,从而实现多协议打印功能。
9.可选地,所述根据所述第一打印请求调用第一打印处理器打印所述第一打印数据,包括:根据所述第一打印请求中的数据类型信息从多个打印处理器中确定所述第一打印处理器,所述第一打印处理器与所述数据类型信息存在关联关系;调用所述第一打印处理器打印所述第一打印数据。
10.接收容器根据第一打印请求中的数据类型信息确定用户想要打印的资料类型(比如,word文档,报表和图片等),并根据资料类型找到对应的打印处理器,比如用户想打印报表,则第一打印请求包含rdlcprint.aspx信息,接收容器根据rdlcprint.aspx信息对应的url地址(比如,http://127.0.0.1:53962/rdlcprint.aspx)找到对应的报表打印处理器;本技术提供多种打印处理器供用户使用,可以满足用户打印不同种类资料的需求。
11.可选地,所述根据所述第一打印请求调用第一打印处理器打印所述第一打印数据,包括:根据所述第一打印请求,通过线程池调用所述第一打印处理器打印所述第一打印
数据;所述方法还包括:从所述端口接收第二浏览器的第二打印请求和第二打印数据;根据所述第二打印请求,通过所述线程池调用第二打印处理器打印所述第二打印数据。
12.当不同用户同时向接收容器发送打印请求(比如,第一打印请求和第二打印请求)时,接收容器可以同时接收多个打印请求,并同时为多个打印请求找到对应的打印处理器(比如,第一打印处理器和第二打印处理器),之后,通过线程调用来满足不同用户的打印需求。由此可见,本技术提供的方法可以同时响应多个打印请求。
13.可选地,所述第一打印数据为数据url,所述根据所述第一打印请求调用第一打印处理器打印所述第一打印数据,包括:从所述数据url对应的资源位置获取打印资源;根据所述第一打印请求调用第一打印处理器打印所述打印资源。
14.第二方面,提供了一种打印浏览器内容的装置,包括用于执行第一方面中任一种方法的模块。
15.第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行执行第一方面中任一项所述的方法。
附图说明
16.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例中打印处理系统的结构示意图;
18.图2为本发明实施例中打印浏览器内容的方法流程示意图;
19.图3为本发明实施例中打印浏览器内容的时序图;
20.图4为本发明实施例中客户端工具内部处理过程的示意图;
21.图5是本技术一实施例提供的打印浏览器内容的装置示意图。
具体实施方式
22.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
23.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
24.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
25.另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
26.在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术
的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。因此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
27.下面结合附图和具体实施例对本技术做进一步详细说明。
28.图1示出了本技术提供的一种打印处理系统,该系统包括客户端浏览器101、客户端的打印模块102和打印机103。客户端浏览器101用于用户访问一些自己感兴趣的网站以及向客户端的打印模块102发送打印请求和打印数据;客户端的打印模块102用于接收用户从客户端浏览器101发送过来的打印请求和打印数据,并处理该打印请求和打印数据以向打印机103发送打印文档;打印机103用于接收客户端的打印模块102发送的打印文档,并根据打印文档为用户打印资源。例如,用户在客户端浏览器101上访问自己感兴趣的网站,并在该网站上浏览自己感兴趣的网页内容。当用户想要打印某些网页内容时,可以通过客户端浏览器101向客户端的打印模块102发送打印请求和打印数据。当客户端的打印模块102接收到该打印请求和打印数据时,处理该打印请求和打印数据以为该打印请求和打印数据分配相应的打印处理器,该打印处理器生成打印文档发送给打印机103。该打印机103在接收到打印文档后执行打印操作。当打印机103执行完打印操作后,向客户端的打印模块102发送打印成功(或者打印失败)的反馈信息,客户端的打印模块102将接收到的反馈信息发送给客户端浏览器101,该客户端浏览器101告知用户打印操作执行完毕,用户可以去打印机103处拿取打印资料。
29.为了能处理用户从不同浏览器发送的打印请求,本技术提出了一种打印浏览器内容的方法,可以实现跨浏览器打印的功能。如图2所示,该方法可以由客户端(即终端设备)的打印模块执行,该方法包括:
30.s201,通过接收容器监听客户端的端口。
31.上述客户端的打印模块包括接收容器,该接收容器包括httpserver容器,httpserver容器用于接收客户端的浏览器发送过来的第一打印请求和第一打印数据。httpserver容器会监听客户端(即终端设备)的端口。客户端的浏览器通过该端口向httpserver容器发送第一打印请求和第一打印数据。由于不同的网站使用的传输协议不同,为了满足用户的各种打印请求,httpserver容器监听客户端的端口包括http端口和https端口,其中,http端口用于接收通过超文本传输协议(hyper text transfer protocol,http)发送过来的第一打印请求和第一数据;https端口用于接收通过超文本传输安全协议(hyper text transfer protocol over secure socket layer,https)发送过来的第一打印请求和第一数据,从而实现httpserver容器可以接收任何网站发送的第一打印请求和第一打印数据。
32.s202,从上述端口接收第一浏览器的第一打印请求和第一打印数据。
33.示例性地,用户通过客户端的第一浏览器访问自己感兴趣的网站,当用户想要打印某网页内容时,可以通过第一浏览器向客户端(即终端设备)的打印模块发送第一打印请求和第一打印数据。该第一浏览器可以是任意类型的浏览器,比如,ie浏览器,谷歌浏览器、火狐浏览器和搜狗浏览器等,本技术对第一浏览器的类型以及版本不作任何限制。该第一
浏览器根据用户发起的第一打印请求和第一打印数据采用异步的方式(比如,ajax方式)向客户端的打印模块发起打印请求。第一浏览器在发送完打印请求后,就可以去处理其他事情而不是一直停留在打印页面以等待打印结束,从而避免了在页面内容打印过程中出现页面卡顿以导致用户无法进行其他操作的情况。
34.上述第一打印请求包括打印请求消息类型,该打印请求消息类型用于告知接收容器用户想要打印何种类型的资源,以便于接收容器根据第一打印请求为用户找到对应的打印处理器;该打印请求消息类型包括图片打印请求消息(比如,picture.aspx)、文档打印请求消息(比如,documentation.aspx)、模板套打请求消息(比如,templatesettingprinting.aspx)和报表打印请求消息,比如,图片打印请求消息用于告知接收容器用户想要打印图片,文档打印请求消息用于告知接收容器用户想要打印文档,office套打请求消息用于告知接收容器用户想要将网页内容套打在office模板中,报表打印请求消息用于告知接收容器用户想要打印报表。本技术对上述打印请求消息类型的具体内容不作任何限制。
35.上述第一打印数据包括具体的打印数据内容和数据统一资源定位符(uniform resource locator,url),由于该数据url是打印数据内容所在的服务器地址,因此,可以从数据url对应的资源位置获取打印资源(即打印数据内容),以便于接收容器根据第一打印请求调用第一打印处理器打印上述打印资源。例如,浏览器发送的第一打印数据为一篇论文,当打印处理器接收到这篇论文时,可以将这篇论文生成打印文档并将该打印文档发送给打印机进行打印;若浏览器发送的第一打印数据为报表数据所在的服务器地址,当打印处理器接收到该报表数据所在的服务器地址时,需要先根据该报表数据所在的服务器地址登录该服务器以获取需要打印的报表数据,再将该报表数据生成打印文档并将该打印文档发送给打印机进行打印。
36.上述客户端的打印模块可以使用任何开发语言实现,比如,java语言、c++等,本技术对此不作任何限制。此外,客户端的打印模块初次启动后会将自己添加到客户端(即终端设备)的操作系统的注册表中,以便于用户每次开启电脑时该客户端的打印模块能自动运行从而为用户提供持续的打印服务。
37.示例性地,若x网站对外部发送某请求是通过http协议发送的,则当用户通过a浏览器访问x网站时,想要打印x网站上某个网页的内容,比如,该网页内容为图片,a浏览器会利用http协议将用户的第一打印请求(即图片打印请求)和第一打印数据(即图片数据)通过http端口发送给httpserver容器。当httpserver容器接收到第一打印请求和第一打印数据时,会根据第一打印请求消息类型(即图片打印请求消息)查询内部的路由规则表,如表1所示,以便于找到该第一打印请求消息(比如,图片打印请求消息)对应的打印处理器类型(比如,图片打印处理器)。该打印处理器类型包括图片打印处理器、文档打印处理器、报表打印处理器和模板套打打印处理器,本技术的打印处理器类型不限于列举出的类型,还可以根据需求设置其他打印处理器类型,比如pdf打印处理器类型等,本技术对此不作任何限定。
38.表1路由规则表
[0039][0040]
该路由规则表是客户端的打印模块中的打印处理器模块在httpserver容器中注册的一个路由规则,该路由规则包括打印请求消息类型、打印请求消息格式、不同类型打印处理器的url地址和打印处理器类型,其中,该不同类型打印处理器的url地址用于httpserver容器为a浏览器发送的第一打印请求和第一打印数据找到对应的打印处理器类型。例如,httpserver容器根据a浏览器发送的图片打印请求和图片打印数据为该图片打印请求找到图片打印处理器,该图片打印处理器就是图片url地址(即http://127.0.0.1:53962/picture.aspx)指向的打印处理器(即图片打印处理器)。特此说明,若x网站对外部发送某请求是通过https协议发送的,则该图片打印处理器所在的图片url地址为https://127.0.0.1:53963/picture.aspx。
[0041]
s203,根据上述第一打印请求调用第一打印处理器打印上述第一打印数据。
[0042]
示例性地,根据第一打印请求中的数据类型信息(即打印请求消息类型)从多个打印处理器中确定第一打印处理器,第一打印处理器与数据类型信息存在关联关系(即打印请求消息类型对应一个打印处理器的url地址,该打印处理器的url地址对应着一个打印处理器),如表1所示;调用第一打印处理器打印第一打印数据。例如,httpserver容器根据第一打印请求中的打印请求消息类型,比如,该打印请求消息类型为报表打印请求消息,httpserver容器通过查找路由规则表(见表1)为该报表打印请求信息找到匹配的报表打印处理器的url地址,该报表打印处理器的url地址指向报表打印处理器。若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,则httpserver容器为第一打印请求(比如,报表打印请求)和第一打印数据(比如,报表打印数据)找到对应的打印处理器(比如,报表打印处理器)后,该打印处理器可以将第一打印数据生成打印文档,并将该打印文档发送给打印机,打印机根据打印文档执行打印操作。此外,若客户端的打印模块是利用面向对象的语言(比如,java语言,c++语言)开发,则httpserver容器为第一打印请求(比如,报表打印
请求)和第一打印数据(比如,报表打印数据)找到匹配的打印处理器类型(比如,报表打印处理器)后,httpserver容器根据该匹配的打印处理器类型创建一个能够处理第一打印请求和第一打印数据的打印处理器实例对象,该打印处理器实例对象将将第一打印数据生成打印文档,并将该打印文档发送给打印机,打印机根据打印文档执行打印操作。
[0043]
示例性地,根据第一打印请求,通过线程池调用第一打印处理器打印第一打印数据;从端口接收第二浏览器的第二打印请求和第二打印数据;根据第二打印请求,通过线程池调用第二打印处理器打印第二打印数据。
[0044]
例如,第一浏览器通过端口(比如,http端口)向httpserver容器发送第一打印请求和第一打印数据,httpserver容器根据第一打印请求查找路由规则表,并找到第一打印请求对应的第一打印处理器(或者第一打印处理器类型)。若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,httpserver容器根据第一打印请求查找路由规则表,并找到第一打印请求对应的第一打印处理器,该第一打印处理器用于处理第一打印请求和第一打印数据。若客户端的打印模块是利用面向对象的语言(比如,java语言)开发,则httpserver容器根据该第一打印请求对应的第一打印处理器类型创建第一打印处理器实例对象,该第一打印处理器实例对象用于处理第一打印请求和第一打印数据;同时,第二浏览器通过端口(比如,http端口)向httpserver容器发送第二打印请求和第二打印数据,httpserver容器根据第二打印请求查找路由规则表,并找到第二打印请求对应的第二打印处理器(或者第二打印处理器类型)。若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,httpserver容器根据第二打印请求查找路由规则表,并找到第二打印请求对应的第二打印处理器,该第二打印处理器用于处理第一打印请求和第一打印数据。若客户端的打印模块是利用面向对象的语言(比如,java语言)开发,则httpserver容器根据该第二打印请求对应的第二打印处理器类型创建第二打印处理器实例对象,该第二打印处理器实例对象用于处理第二打印请求和第二打印数据。
[0045]
若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,httpserver容器分别根据第一打印请求和第二打印请求查找路由规则表,并找到第一打印请求对应的第一打印处理器以及第二打印请求对应的第二打印处理器后;或者,若客户端的打印模块是利用面向对象的语言(比如,java语言)开发,则httpserver容器为第一打印请求和第二打印请求创建完各自的第一打印处理器实例对象和第二打印处理器实例对象后;httpserver容器将第一打印请求、第一打印数据和第一打印处理器(或者第一打印处理器实例对象),以及第二打印请求、第二打印数据和第二打印处理器(或者第二打印处理器实例对象)均放在终端设备(或客户端)的后台线程池排队,比如,终端设备(或客户端)的后台操作系统分配第一线程用于处理第一打印请求,第二线程用户处理第二打印请求,当后台操作系统处理到第一线程时,第一打印处理器(或者第一打印处理器实例对象)按照约定参数生成内部打印文档,并将该打印文档发送至打印机,打印机根据该打印文档执行打印操作。当打印机执行打印操作后,会给第一打印处理器(或者第一打印处理器实例对象)发送打印成功或者打印失败的反馈信息,第一打印处理器(或者第一打印处理器实例对象)接收到反馈信息后发送给httpserver容器,httpserver容器将该反馈信息通过端口(比如,http端口)发送给第一浏览器,第一浏览器将该反馈信息显示给用户。特此说明,后台操作系统处理第二线程的方法,与后台操作系统处理第一线程的方法相同,此处不再赘述。
[0046]
上述约定参数包括打印页面纸张设置和打印数据所在的服务器地址,比如,打印页面纸张设置包括设置打印页面的纸张大小,设置页码范围,设置单双面,设置黑白或者彩印等;打印数据所在的服务器地址是指有些打印数据不是从浏览器页面发送的具体打印内容,而是打印数据所在的服务器地址,打印处理器(或者打印处理器实例对象)(比如,第一打印处理器或者第一打印处理器实例对象)需要登录该打印数据所在的服务器地址,才能获取到打印数据。
[0047]
上述第一浏览器和第二浏览器可以是相同的浏览器也可以不同的浏览器,上述第一打印请求和第二打印请求可以是相同类型的打印请求也可以是不同类型的请求,本技术对此不作任何限定。例如,若b浏览器同时向httpserver容器发送两个相同打印请求为例,比如,该两个打印请求都是图片打印请求;httpserver容器从http端口接收到第一图片打印请求和第一图片打印数据,同时可以从http端口也可以从https端口接收到第二图片打印请求和第二图片打印数据;httpserver容器根据第一图片打印请求和第一图片打印数据查找路由规则表找到第一图片打印请求对应的图片打印处理器(或者图片打印处理器类型),若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,httpserver容器根据第一图片打印请求查找路由规则表,并找到第一图片打印请求对应的第一图片打印处理器,该第一图片打印处理器用于处理第一图片打印请求和第一图片打印数据。若客户端的打印模块是利用面向对象的语言(比如,java语言)开发,则httpserver容器为该第一图片打印请求创建第一图片打印处理器实例对象,该第一图片打印处理器实例对象用于处理第一图片打印请求和第一图片数据;同时,httpserver容器根据第二图片打印请求和第二图片打印数据查找路由规则表找到第二图片打印请求对应的图片打印处理器(或者图片打印处理器类型),若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,则httpserver容器根据第二图片打印请求查找路由规则表,并找到第二图片打印请求对应的第二图片打印处理器,该第二图片打印处理器用于处理第二图片打印请求和第二图片打印数据。若客户端的打印模块是利用面向对象的语言(比如,java语言)开发,则httpserver容器为该第二图片打印请求创建第二图片打印处理器实例对象,该第二图片打印处理器实例对象用于处理第二图片打印请求和第二图片数据。由此可见,httpserver容器可以同时接收两个相同的打印请求,若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,则httpserver容器可以同时为两个相同的打印请求找到匹配的打印处理器;若客户端的打印模块是利用面向对象的语言(比如,java语言)开发,则httpserver容器可以同时为两个相同的打印请求创建各自对应的打印处理器实例对象(比如,第一图片打印处理器实例对象和第二图片打印处理器实例对象),以实现同时响应两个相同打印请求的功能。
[0048]
若客户端的打印模块是利用非面向对象的语言(比如,c语言)开发,httpserver容器分别根据第一图片打印请求和第二图片打印请求查找路由规则表,并找到第一图片打印请求对应的第一图片打印处理器以及第二图片打印请求对应的第二图片打印处理器后;或者,若客户端的打印模块是利用面向对象的语言(比如,java语言)开发,则当httpserver容器为两个相同的图片打印请求分配了第一图片打印处理器实例对象和第二图片打印处理器实例对象后,将第一图片打印请求、第一图片打印数据和第一图片打印处理器(或者第一图片打印处理器实例对象)放在线程池排队,同时,将第二图片打印请求、第二图片打印数据和第二图片打印处理器(或者第二图片打印处理器实例对象)也放在终端设备(或客户
端)的后台线程池排队。终端设备(或客户端)的后台操作系统分配第一图片线程用于处理第一图片打印请求,第二图片线程用户处理第二图片打印请求,当后台操作系统处理到第一图片线程时,第一图片打印处理器(或者第一图片打印处理器实例对象)按照约定参数生成内部打印文档,并将该打印文档发送至打印机,打印机根据该打印文档执行打印操作。当打印机执行打印操作后,会给第一图片打印处理器(或者第一图片打印处理器实例对象)发送打印成功或者打印失败的反馈信息,第一图片打印处理器(或者第一图片打印处理器实例对象)接收到反馈信息后发送给httpserver容器,httpserver容器将该反馈信息通过端口(比如,http端口)发送给第一浏览器,第一浏览器将该反馈信息显示给用户。特此说明,后台操作系统处理第二图片线程的方法,与后台操作系统处理第一图片线程的方法相同,此处不再赘述。
[0049]
示例性地,若b浏览器同时向httpserver容器发送两个不相同打印请求,比如,第一打印请求为图片打印请求,第二打印请求为报表打印请求。本实施例仅以客户端的打印模块以面向对象的语言(比如,java语言)开发为例,说明客户端的打印模块是如何同时响应两个不相同打印请求的。httpserver容器从http端口接收到图片打印请求和图片打印数据,同时可以从http端口也可以从https端口接收到报表打印请求和报表打印数据;httpserver容器根据图片打印请求和图片打印数据查找路由规则表找到图片打印请求对应的图片打印处理器类型,并根据图片打印处理器类型为该图片打印请求创建图片打印处理器实例对象,该图片打印处理器实例对象用于处理图片打印请求和图片数据;同时,httpserver容器根据报表打印请求和报表打印数据查找路由规则表找到报表打印请求对应的报表打印处理器类型,并根据报表打印处理器类型为该报表打印请求创建报表打印处理器实例对象,该报表打印处理器实例对象用于处理报表打印请求和报表打印数据。由此可见,httpserver容器可以同时接收两个不相同的打印请求,并同时为两个不相同的打印请求创建各自对应的打印处理器实例对象(比如,图片打印处理器实例对象和报表打印处理器实例对象),以实现同时响应两个不同打印请求的功能。
[0050]
当httpserver容器为两个不同的打印请求创建了各自对应的图片打印处理器实例对象和报表打印处理器实例对象后,将图片打印请求、图片打印数据和图片打印处理器实例对象放在线程池排队,同时,将报表打印请求、报表打印数据和报表打印处理器实例对象也放在终端设备(或客户端)的后台线程池排队。终端设备(或客户端)的后台操作系统分配图片线程用于处理图片打印请求,报表线程用户处理报表打印请求,当后台操作系统处理到报表线程时,报表打印处理器实例对象按照约定参数生成内部打印文档,并将该打印文档发送至打印机,打印机根据该打印文档执行打印操作。当打印机执行打印操作后,会给报表打印处理器实例对象发送打印成功或者打印失败的反馈信息,报表打印处理器实例对象接收到反馈信息后发送给httpserver容器,httpserver容器将该反馈信息通过端口(比如,http端口)发送给第一浏览器,第一浏览器将该反馈信息显示给用户。特此说明,后台操作系统处理图片线程的方法,与后台操作系统处理报表线程的方法相同,此处不再赘述。
[0051]
对于客户端的打印模块以非面向对象的语言(比如,c语言)开发,实现同时响应两个不相同打印请求的处理方法类似同时响应两个相同打印请求的处理方法,在此不再赘述。
[0052]
示例性地,若b浏览器同时向httpserver容器发送多个打印请求,httpserver容器
处理该多个打印请求的方法,与处理上述两个打印请求的方法相同,本技术在此不再赘述。
[0053]
为了便于理解,下面结合图3和图4对本技术提供的打印浏览器内容的方法的整体流程步骤进行示例性说明。首先,介绍打印浏览器内容整个过程的时序图,如图3所示,具体流程如下:(特此说明,图3和图4中客户端工具以面向对象语言开发为例,说明实现打印浏览器内容的方法的整个处理过程)
[0054]
步骤301:用户通过客户端的浏览器访问自己感兴趣的网站,当用户想要打印某网页内容时,可以通过浏览器向客户端(即终端设备)的打印模块发送第一打印请求和第一打印数据。该浏览器将客户打印需求通过post方法发送给客户端工具(即客户端的打印处理模块),该post方法需要向客户端工具提交如下数据:第一打印请求消息(比如,打印请求消息类型)和第一打印数据(比如,数据url,http://localhsot:53962/rdlcprint.aspx,以及body参数:报表所需要参数)。
[0055]
步骤302:客户端工具的接收容器(比如,httpserver容器,图3未示出)接收客户端的浏览器发送过来的第一打印请求和第一打印数据,并为该第一打印请求查找对应的打印处理器。打印处理器根据客户端的浏览器发送的url参数(即第一打印数据)发送http请求(即获取打印数据内容的请求)给第一打印数据所在的服务器,以便于从该服务器获取第一打印数据的具体内容。
[0056]
步骤303:该服务器根据接收到的http请求为打印处理器返回第一打印数据的具体内容(比如,图片数据流)。
[0057]
步骤304:打印处理器接收到第一打印数据的具体内容后,在内部构造打印数据结构(即生成打印文档)。
[0058]
步骤305:打印处理器将生成的打印文档发送给打印机,打印机根据打印文档执行打印操作。打印机执行完打印操作,将打印成功或者打印失败的信息反馈给打印处理器(图3未示出)。
[0059]
步骤306:打印处理器将打印机反馈的信息发送给客户端的浏览器,该客户端的浏览器将打印成功或者打印失败的消息通知给用户。
[0060]
客户端工具(即客户端的打印模块)内部处理过程(如图4所示)的流程步骤如下:
[0061]
步骤401:发送打印请求。当用户在浏览器中浏览某网页时,需要执行打印操作,浏览器可以通过客户端的端口向httpserver容器(即接收容器)发送打印请求(比如,第一打印请求)。
[0062]
步骤402:查找路由规则表。httpserver容器接收到打印请求后,根据打印请求查找路由规则表,选择一个匹配的打印处理器类型。
[0063]
步骤403:获取打印处理器实例。httpserver容器根据上述匹配的打印处理器类型从处理器工厂(若该客户端工具使用面向对象语言实现,处理器工厂在此处为一个处理器工厂类)获取一个打印处理器实例。
[0064]
步骤404:返回打印处理器实例。处理器工厂类根据打印处理器类型返回一个打印处理器实例对象。该打印处理器实例对象用于处理打印请求和打印数据。
[0065]
步骤405:将打印任务提交到线程池(排队)。将打印请求、打印数据和打印处理器实例对象放在线程池排队,终端设备(或客户端)的后台操作系统会分配打印线程用于处理该打印请求。
[0066]
步骤406:调用处理器(即调用打印处理实例对象)。当后台操作系统处理到上述打印线程时,会调用打印处理器实例对象。
[0067]
步骤407:获取打印数据。打印处理器实例对象会根据打印数据(比如,数据url)的url地址向打印数据所在的服务器发送获取打印数据内容的指令。
[0068]
步骤408:返回打印数据。打印数据所在的服务器根据上述指令返回打印数据的具体内容给打印处理器实例对象。
[0069]
步骤409:构造打印数据结构。打印处理器实例对象根据打印数据的具体内容构造打印数据结构(即生成打印文档)。
[0070]
步骤410:执行打印动作。打印处理器实例对象将生成的打印文档发送至打印机,打印机根据该打印文档执行打印操作。
[0071]
步骤411:返回打印状态(成功/失败)。打印机执行完打印操作,将打印成功或者打印失败的信息反馈给打印处理器实例对象(图4未示出)。打印处理器实例对象将打印机反馈的打印状态(即打印成功/打印失败)发送给客户端的浏览器,该客户端的浏览器将该打印状态通知给用户。
[0072]
图5是本技术提供的一种袖带加压的装置的结构示意图。该装置500包括监听模块501、接收模块502和处理模块503。
[0073]
监听模块501,用于通过接收容器监听客户端的端口。
[0074]
接收模块502,用于从端口接收第一浏览器的第一打印请求和第一打印数据。
[0075]
处理模块503,用于根据第一打印请求调用第一打印处理器打印第一打印数据
[0076]
装置500执行打印浏览器内容的方法的具体方式以及产生的有益效果可以参见方法实施例中的相关描述。
[0077]
本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本技术中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
[0078]
该计算机可读存储介质例如是存储器。存储器可以是易失性存储器或非易失性存储器,或者,存储器可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read

only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。
[0079]
本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
[0080]
在本技术所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它的方
式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
[0081]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制。尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1