CN113032707B - 生成网页截图的方法、装置及电子设备 - Google Patents

生成网页截图的方法、装置及电子设备 Download PDF

Info

Publication number
CN113032707B
CN113032707B CN202110323020.2A CN202110323020A CN113032707B CN 113032707 B CN113032707 B CN 113032707B CN 202110323020 A CN202110323020 A CN 202110323020A CN 113032707 B CN113032707 B CN 113032707B
Authority
CN
China
Prior art keywords
page
browser
screenshot
creating
input interface
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.)
Active
Application number
CN202110323020.2A
Other languages
English (en)
Other versions
CN113032707A (zh
Inventor
黄雷
高斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu New Hope Finance Information Co Ltd
Original Assignee
Chengdu New Hope Finance Information Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu New Hope Finance Information Co Ltd filed Critical Chengdu New Hope Finance Information Co Ltd
Priority to CN202110323020.2A priority Critical patent/CN113032707B/zh
Publication of CN113032707A publication Critical patent/CN113032707A/zh
Application granted granted Critical
Publication of CN113032707B publication Critical patent/CN113032707B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请提供了一种生成网页截图的方法、装置及电子设备,涉及数据处理技术领域,该方法包括:基于网页框架创建浏览器实例并对浏览器实例进行输入接口编写得到浏览器输入接口并对浏览器输入接口进行校验并创建对浏览器输入接口进行调用的调用文件。在基于各个页面地址异步创建得到的promise对象中创建页面对象并设置浏览器等待时间。基于对页面对象进行写操作得到的写入页面、浏览器等待时间以及预设条件得到渲染页面。将在渲染页面中选定目标对象后得到对应的截图对象放置在画布中并添加水印得到带水印截图。本申请异步批量创建各个页面地址对应的页面对象,并基于各个页面对象得到不同页面地址对应的带水印截图,提高生成网页截图的效率。

Description

生成网页截图的方法、装置及电子设备
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种生成网页截图的方法、装置及电子设备。
背景技术
随着各个企事业单位的业务发展,有大量报表、图表、大屏等页面数据需要输出,现阶段通过人工的方式对上述页面数据进行截图并添加指定水印,通过人工方式对各个数据页面进行截图将耗费大量时间跟人力,存在生成网页截图效率低的问题。
发明内容
本申请的实施例在于提供一种生成网页截图的方法、装置及电子设备,以解决目前方法生成网页截图效率低的问题。
本申请的实施例提供了一种生成网页截图的方法,所述方法包括:
基于网页框架创建浏览器实例并对所述浏览器实例进行输入接口编写得到浏览器输入接口,所述浏览器输入接口的入参包括所述浏览器实例的页面地址;
基于用户截图请求的请求头中的cookie对所述浏览器输入接口进行校验并创建对所述浏览器输入接口进行调用的调用文件,所述调用文件中包含所述cookie;
遍历所述浏览器实例的各个所述页面地址异步创建对应的promise对象,并在所述promise对象中创建页面对象;
针对所述浏览器实例的每个所述页面地址,通过页面对象中的页面打开函数打开所述页面地址并设置浏览器等待时间;
将所述调用文件中的所述cookie写入所述页面对象得到写入页面,并基于所述写入页面、所述浏览器等待时间以及预设条件进行页面跳转得到渲染页面,所述预设条件为判断所述写入页面完成跳转的条件;
在所述渲染页面中选定目标对象,并基于截图函数得到选定的所述目标对象的截图对象;
将所述截图对象放置在画布中并添加水印后得到带水印截图。
在上述实现过程中,在同一浏览器实例中针对所述浏览器实例中各个页面地址创建所述页面地址异步创建对应的promise对象,并基于对应的promise对象创建页面对象,针对对应的页面对象进行页面打开、浏览器等待时间设置并根据判决条件在确定写入页面完成渲染得到渲染页面,在对应的所述渲染页面上选定需要进行截图的所述目标对象,对对应得到的所述目标对象利用截图函数进行截图操作得到截图对象,能够批量处理同一浏览器实例中多个页面地址对应下的截图操作并得到各个页面地址对应的截图对象,在将截图对象放入所述画布中添加水印得到带水印截图,不需要人工方式逐个针对每一个页面地址进行截图操作,能够提高得到截图的效率。
可选地,所述基于网页框架创建浏览器实例并对所述浏览器实例进行输入接口编写得到浏览器输入接口,所述浏览器输入接口的入参包括所述浏览器实例的页面地址,包括:
通过koa2框架搭建浏览器运行环境,并在所述运行环境中安装工具引擎pupeteer;
基于所述工具引擎pupeteer创建所述浏览器实例;
编写所述浏览器实例的输入接口,所述输入接口的入参包括所述浏览器实例的所述页面地址。
在上述实现过程中,koa2框架中的所述工具引擎pupeteer为异步业务的组合体,能够基于所述工具引擎pupeteer异步创建所述浏览器实例中各个所述页面地址所述输入接口,以基于各个所述输入接口进行页面对象创建,能够为一步创建各个所述页面地址对应的promise对象提供环境支持。
可选地,所述基于用户截图请求的请求头中的cookie对所述浏览器输入接口进行校验并创建对所述浏览器输入接口进行调用的调用文件,所述调用文件中包含所述cookie,包括:
通过ctx.cookie读取所述请求头中的cookie;
通过所述cookie对所述浏览器输入接口进行校验得到校验结果;
当所述校验结果显示所述请求头通过校验时,通过fs.mkdir创建调用文件,所述调用文件中包括所述cookie。
在上述实现过程中,通过将所述cookie验证与所述浏览器输入接口进行校验,以实现对用户的身份验证,提高截图操作的安全性。
可选地,所述遍历所述浏览器实例的各个所述页面地址异步创建对应的promise对象,并在所述promise对象中创建页面对象,包括:
通过promise.all方法对所述浏览器实例的各个所述页面地址进行遍历得到遍历进行对象创建得到每个所述页面地址对应的promise对象;
通过browser.newPage方法在每个所述promise对象中创建页面得到所述promise对象对应的页面对象。
在上述实现过程中,promise.all方法能够实现两个或者两个以上异步事件均完成后再触发回调的功能,在通过browser.newPage方法能够完成各个异步创建所述页面地址异步创建对应的页面对象的功能时,promise.all方法能够接收不同类型的参数,能够适用于不同参数情况下进行页面对象的创建,提高页面创建的适用性。
可选地,所述在所述渲染页面中选定目标对象,并基于截图函数得到选定的所述目标对象的截图对象,包括:
在所述渲染页面中选定所述目标对象,调用Chrome DevToolsProtocal中的captureScreenshot方法对所述目标对象进行截图得到截图对象。
在上述实现过程中,调用Chrome DevToolsProtocal中的captureScreenshot方法进行截图,能够实现对各个所述渲染页面的所述目标对象进行异步截图,提高截图的效率。
可选地,所述将所述截图对象放置在画布中并添加水印后得到带水印截图并将所述带水印截图,包括:
通过page.evalute函数的document.createElement方法创建画布;
通过drawImage方法将所述截图对象放置在所述画布中;
通过canvas.fillText方法对所述截图对象添加水印得到所述带水印截图;
将所述带水印截图转换为指定格式,通过调用writeFileSync方法生成所述带水印截图的图片,并保存在图片文件夹中。
在上述实现过程中,通过document.createElement方法创建画布,能够通过画布的尺寸设置调整基于画布得到的所述带水印截图截图的尺寸,提高对不同页面地址的页面进行截图的灵活性。
可选地,在所述将所述截图对象放置在画布中并添加水印后得到带水印截图之后,所述方法还包括:
通过fs.createReadStream方法创建读文件流读入所述图片文件夹生成文件流;
通过zlib.DeflateRaw方法对所述文件流进行压缩得到压缩文件流;
通过crc32算法对所述压缩文件流的数据完整性校验得到验证结果;
当所述验证结果显示所述压缩文件流通过校验时,通过fs.createReadStream方法创建写文件流;
通过所述写文件流将所述压缩文件流写入压缩文件。
在上述实现过程中,通过fs.createReadStream方法创建读文件流以及写文件流,将读入的所述文件流进行压缩并进行数据完整性校验,能够降低基于截图操作得到的所述图片文件夹对内存的占用,提高截图操作对于内存的利用率并提高最终得到的截图数据即图片文件夹的可靠性。
可选地,所述浏览器输入接口的入参包括所述浏览器实例的输出配置参数,在所述将所述截图对象放置在画布中并添加水印后得到带水印截图之后,所述方法还包括:
基于所述浏览器实例的输出配置参数,创建时间轮询;
创建对所述图片文件夹进行发送的进程,并基于所述时间轮询通过所述进程将所述图片文件夹进行发送。
在上述实现过程中,创建对所述图片文件夹进行发送的进程,并基于所述时间轮询通过所述进程将所述图片文件夹进行发送,避免个别所述图片文件夹不能成功发送而影响所有所述图片文件夹的发送,提高图片文件夹发送的效率。
本申请的实施例提供了一种生成网页截图的装置,所述生成网页截图的装置包括:
实例创建模块,用于基于网页框架创建浏览器实例并对所述浏览器实例进行输入接口编写得到浏览器输入接口,所述浏览器输入接口的入参包括所述浏览器实例的页面地址;
校验模块,用于基于用户截图请求的请求头中的cookie对所述浏览器输入接口进行校验并创建对所述浏览器输入接口进行调用的调用文件,所述调用文件中包含所述cookie;
页面创建模块,用于遍历所述浏览器实例的各个所述页面地址异步创建对应的Promise对象,并在所述Promise对象中创建页面对象;
设置模块,用于针对所述浏览器实例的每个所述页面地址,通过页面对象中的页面打开函数打开所述页面地址并设置浏览器等待时间;
渲染模块,用于将所述调用文件中的所述cookie写入所述页面对象得到写入页面,并基于所述写入页面、所述浏览器等待时间以及预设条件进行页面跳转得到渲染页面,所述预设条件为判断所述写入页面完成跳转的条件;
截图模块,用于在所述渲染页面中选定目标对象,基于截图函数得到选定的所述目标对象的截图对象;
生成模块,用于将所述截图对象放置在画布中并添加水印后得到带水印截图。
在上述实现过程中,在同一浏览器实例中针对所述浏览器实例中各个页面地址创建所述页面地址异步创建对应的promise对象,并基于对应的promise对象创建页面对象,针对对应的页面对象进行页面打开、浏览器等待时间设置并根据判决条件在确定写入页面完成渲染得到渲染页面,在对应的所述渲染页面上选定需要进行截图的所述目标对象,对对应得到的所述目标对象利用截图函数进行截图操作得到截图对象,能够批量处理同一浏览器实例中多个页面地址对应下的截图操作并得到各个页面地址对应的截图对象,在将截图对象放入所述画布中添加水印得到带水印截图,不需要人工方式逐个针对每一个页面地址进行截图操作,能够提高得到截图的效率。
可选地,所述实例创建模块用于:
通过koa2框架搭建浏览器运行环境,并在所述运行环境中安装工具引擎pupeteer;
基于所述工具引擎pupeteer创建所述浏览器实例;
编写所述浏览器实例的输入接口,所述输入接口的入参包括所述浏览器实例的所述页面地址。
在上述实现过程中,koa2框架中的所述工具引擎pupeteer为异步业务的组合体,能够基于所述工具引擎pupeteer异步处理所述浏览器实例中各个所述页面地址创建所述输入接口,以基于各个所述输入接口进行页面对象创建,能够为一步创建各个所述页面地址对应的promise对象提供环境支持。
可选地,所述校验模块用于:
通过ctx.cookie读取所述请求头中的cookie;
通过所述cookie对所述浏览器输入接口进行校验得到校验结果;
当所述校验结果显示所述请求头通过校验时,通过fs.mkdir创建调用文件,所述调用文件中包括所述cookie。
在上述实现过程中,通过将所述cookie验证与所述浏览器输入接口进行校验,以实现对用户的身份验证,提高截图操作的安全性。
可选地,所述页面创建模块用于:
通过promise.all方法对所述浏览器实例的各个所述页面地址进行遍历得到遍历进行对象创建得到每个所述页面地址对应的promise对象;
通过browser.newPage方法在每个所述promise对象中创建页面得到所述promise对象对应的页面对象。
在上述实现过程中,promise.all方法能够实现两个或者两个以上异步事件均完成后再触发回调的功能,在通过browser.newPage方法能够完成各个异步创建所述页面地址异步创建对应的页面对象的功能时,promise.all方法能够接收不同类型的参数,能够适用于不同参数情况下进行页面对象的创建,提高页面创建的适用性。
可选地,所述截图模块用于:
在所述渲染页面中选定所述目标对象,调用Chrome DevToolsProtocal中的captureScreenshot方法对所述目标对象进行截图得到截图对象。
在上述实现过程中,调用Chrome DevToolsProtocal中的captureScreenshot方法进行截图,能够实现对各个所述渲染页面的所述目标对象进行异步截图,提高截图的效率。
可选地,所述生成模块用于:
通过page.evalute函数的document.createElement方法创建画布;
通过drawImage方法将所述截图对象放置在所述画布中;
通过canvas.fillText方法对所述截图对象添加水印得到所述带水印截图;
将所述带水印截图转换为指定格式,通过调用writeFileSync方法生成所述带水印截图的图片,并保存在图片文件夹中。
在上述实现过程中,通过document.createElement方法创建画布,能够通过画布的尺寸设置调整基于画布得到的所述带水印截图截图的尺寸,提高对不同页面地址的页面进行截图的灵活性。
可选地,所述生成网页截图的装置还包括压缩模块,所述压缩模块用于:
通过fs.createReadStream方法创建读文件流读入所述图片文件夹生成文件流;
通过zlib.DeflateRaw方法对所述文件流进行压缩得到压缩文件流;
通过crc32算法对所述压缩文件流的数据完整性校验得到验证结果;
当所述验证结果显示所述压缩文件流通过校验时,通过fs.createReadStream方法创建写文件流;
通过所述写文件流将所述压缩文件流写入压缩文件。
在上述实现过程中,通过fs.createReadStream方法创建读文件流以及写文件流,将读入的所述文件流进行压缩并进行数据完整性校验,能够降低基于截图操作得到的所述图片文件夹对内存的占用,提高截图操作对于内存的利用率并提高最终得到的截图数据即图片文件夹的可靠性。
可选地,生成网页截图的装置还包括发送模块,所述发送模块用于:
基于所述浏览器实例的输出配置参数,创建时间轮询;
创建对所述图片文件夹进行发送的进程,并基于所述时间轮询通过所述进程将所述图片文件夹进行发送。
在上述实现过程中,创建对所述图片文件夹进行发送的进程,并基于所述时间轮询通过所述进程将所述图片文件夹进行发送,避免个别所述图片文件夹不能成功发送而影响所有所述图片文件夹的发送,提高图片文件夹发送的效率。
本实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任意方法中的步骤。
本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行上述任意方法中的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
图1为本申请实施例提供的一种生成网页截图的方法的流程图。
图2为本申请实施例提供的一种输入接口编写的步骤的流程图。
图3为本申请实施例提供的一种输入接口校验的步骤的流程图。
图4为本申请实施例提供的一种创建页面对象的步骤的流程图。
图5为本申请实施例提供的一种生成带水印截图的步骤的流程图。
图6为本申请实施例提供的一种压缩图片文件夹的步骤的流程图。
图7为本申请实施例提供的一种发送图片文件夹的步骤的流程图。
图8为本申请实施例提供的一种生成网页截图的装置的示意图。
图例:90-生成网页截图的装置;901-实例创建模块;902-校验模块;903-页面创建模块;904-设置模块;905-渲染模块;906-截图模块;907-生成模块;908-压缩模块;909-发送模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在本申请的描述中,需要说明的是,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书、以及附图中所特别指出的结构来实现和获得。
为了提高网页截图的效率,本申请的实施例提供了一种生成网页截图的方法,请参看图1,图1为本申请实施例提供的一种生成网页截图的方法的流程图,所述生成网页截图的方法包括以下分步骤:
步骤S1:基于网页框架创建浏览器实例并对浏览器实例进行输入接口编写得到浏览器输入接口,浏览器输入接口的入参包括浏览器实例的页面地址。
请参看图2,图2为本申请实施例提供的一种输入接口编写的步骤的流程图。可选地,步骤S1包括以下分步骤:
步骤S11:通过koa2框架搭建浏览器运行环境,并在运行环境中安装工具引擎pupeteer。
可以理解的是,koa2框架是基于Node.js平台的网页开发框架,koa2框架总的功能均能通过插件形式实现,具有更轻量的节点框架,能够提高搭建运行环境的简介度和自由度。
步骤S12:基于工具引擎pupeteer创建浏览器实例。
可以理解的是,工具引擎pupeteer是一个节点(Node)库,提供控制浏览器的应用接口。koa2框架中的工具引擎pupeteer为异步业务的组合体,能够基于工具引擎pupeteer异步创建浏览器实例中各个页面地址输入接口,以基于各个所述输入接口进行页面对象创建,能够为一步创建各个所述页面地址对应的promise对象提供环境支持。作为一种实施方式,可以采用puppeteer.launch方法创建浏览器(可以是无头浏览器)得到浏览器实例。
步骤S13:编写浏览器实例的输入接口,输入接口的入参包括浏览器实例的页面地址。
作为一种实施方式,输入接口的参数还包括浏览器实例的输出配置参数,比如图片尺寸用于对截图输出的图片大小进行设置。可以理解的是浏览器实例的页面地址可以是数组形式。
步骤S2:基于用户截图请求的请求头中的cookie对浏览器输入接口进行校验并创建对浏览器输入接口进行调用的调用文件,调用文件中包含cookie。
请参看图3,图3为本申请实施例提供的一种输入接口校验的步骤的流程图。可选地,步骤S2包括以下分步骤:
步骤S21:通过ctx.cookie读取请求头中的cookie。
可以理解的是,ctx.cookie能够从用户截图请求的请求头中获取cookie,获取用户身份信息,以便浏览器输入接口验证该用户是否有权限调用浏览器输入接口,提高网页截图的安全性。
步骤S22:通过cookie对浏览器输入接口进行校验得到校验结果。
在步骤S21以及步骤S22中,可以理解的是,ctx.cookie能够从用户截图请求的请求头中获取cookie,获取用户身份信息,以便浏览器输入接口验证该用户是否有权限调用浏览器输入接口,提高网页截图的安全性。
步骤S23:当校验结果显示请求头通过校验时,通过fs.mkdir创建调用文件,调用文件中包括cookie。
可以理解的是,调用文件中的cookie在写入页面对象后能够对页面对象的创建路由进行校验,提高页面对象创建的准确性。
步骤S3:遍历浏览器实例的各个页面地址异步创建对应的promise对象,并在promise对象中创建页面对象。
请参看图4,图4为本申请实施例提供的一种创建页面对象的步骤的流程图。可选地,步骤S3包括以下分步骤:
步骤S31:通过promise.all方法对浏览器实例的各个页面地址进行遍历得到遍历进行对象创建得到每个页面地址对应的promise对象。
步骤S32:通过browser.newPage方法在每个promise对象中创建页面得到promise对象对应的页面对象。
在步骤S31以及步骤S32中,promise.all方法能够实现两个或者两个以上异步事件均完成后再触发回调的功能,也就是能够实现两个或者两个以上页面对象的创建,在通过browser.newPage方法能够完成各个异步创建页面地址异步创建对应的页面对象的功能时,promise.all方法能够接收不同类型的参数,能够适用于不同参数情况下进行页面对象的创建,提高页面创建的适用性。
步骤S4:针对浏览器实例的每个页面地址,通过页面对象中的页面打开函数打开页面地址并设置浏览器等待时间。
步骤S5:将调用文件中的cookie写入页面对象得到写入页面,并基于写入页面、浏览器等待时间以及预设条件进行页面跳转得到渲染页面,预设条件为判断写入页面完成跳转的条件。
在步骤S4以及步骤S5中,可以理解的是,设置浏览器等待时间,将浏览器等待时间带入预设条件中,当浏览器等待时间满足预设条件时,判定写入页面完成渲染并得到渲染页面,浏览器等待时间可以根据实际情况通过配置文件进行设置,例如浏览器等待时间可以设置为30s。
步骤S6:在渲染页面中选定目标对象,并基于截图函数得到选定的目标对象的截图对象。
作为一种实施方式,目标对象根据用户的需求选定,目标对象可以是报表、文字、图标等不同的对象。
可选地,步骤S6包括:在渲染页面中选定所述目标对象,调用ChromeDevToolsProtocal中的captureScreenshot方法对目标对象进行截图得到截图对象。
可以理解的是,captureScreenshot方法的代码简单,运行速度快,能够提高截图的效率。作为一种实施方式,可以通过RenderTexture方法来对目标对象进行截图,RenderTexture方法能够实现屏蔽功能。
步骤S7:将截图对象放置在画布中并添加水印后得到带水印截图。
请参看图5,图5为本申请实施例提供的一种生成带水印截图的步骤的流程图。可选地,步骤S7包括以下分步骤:
步骤S71:通过page.evalute函数的document.createElement方法创建画布。
步骤S72:通过drawImage方法将截图对象放置在画布中。
可以理解的是,在步骤S71以及步骤S72中通过document.createElement方法创建画布,能够通过画布的尺寸设置调整基于画布得到的带水印截图截图的尺寸,以达到步骤S13中对设置的图片尺寸的要求即浏览器实例的输出配置参数,以提高对不同页面地址的页面进行截图的灵活性。
步骤S73:通过canvas.fillText方法对截图对象添加水印得到带水印截图。
可以理解的是,基于canvas.fillText方法能够自定义不同的水印,以提高水印对于浏览器实例的匹配程度。
步骤S74:将带水印截图转换为指定格式,通过调用writeFileSync方法生成带水印截图的图片,并保存在图片文件夹中。
可以理解的是,步骤S74中的指定格式可以为任意格式,以base64格式为例,base64格式图片具有不可读性,即经base64编码的图片不会被人用肉眼所直接看到,提高带水印截图的安全性。
作为一种实施方式,可以将图片文件夹中的带水印截图的图片通过质量(quality)设置的方法减少该带水印截图的图片上的颜色差异,能够实现带水印截图的图片上紧挨着的颜色相近的四个像素的颜色信息压缩前大概占16个字节,压缩后变成一个颜色就能减少近4倍。quality设置能够用来控制带水印截图的图片的色差的力度,quality设置值越小则色差的力度越大,因此,颜色相差较大的两个像素被压缩处理,被压缩后文件就越小画质就越差,最终实现图片压缩效果。
作为一种实施方式,将带水印截图的图片通过调用koa2框架中的node.js平台里的fs模块中的writeFileSync方法,能够生成图片并保存在新建的日期文件夹中。
请参看图6,图6为本申请实施例提供的一种压缩图片文件夹的步骤的流程图。可选地,在步骤S7之后,所述生成网页截图的方法还包括步骤S8,步骤S8包括以下分步骤:
步骤S81:通过fs.createReadStream方法创建读文件流读入图片文件夹生成文件流。
步骤S82:通过zlib.DeflateRaw方法对文件流进行压缩得到压缩文件流。
步骤S83:通过crc32算法对压缩文件流的数据完整性校验得到验证结果。
步骤S84:当验证结果显示压缩文件流通过校验时,通过fs.createReadStream方法创建写文件流。
步骤S85:通过写文件流将压缩文件流写入压缩文件。
在步骤S82-S85中,通过fs.createReadStream方法创建读文件流以及写文件流,将读入的文件流进行压缩并进行数据完整性校验,能够降低基于截图操作得到的所述图片文件夹对内存的占用,提高截图操作对于内存的利用率并提高最终得到的截图数据即图片文件夹的可靠性。
请参看图7,图7为本申请实施例提供的一种发送图片文件夹的步骤的流程图。可选地,在步骤S7之后,所述生成网页截图的方法还包括步骤S9,步骤S9包括以下分步骤:
步骤S91:基于浏览器实例的输出配置参数,创建时间轮询。
步骤S92:创建对图片文件夹进行发送的进程,并基于时间轮询通过所述进程将图片文件夹进行发送。
在步骤S91以及步骤S92中,可以理解的是,可以选用邮件方式对图片文件夹进行邮件发送。如果邮件发送的配置中含有发送时间,可以创建一个时间轮询(可以是setTimeout轮询),引入moment-timezone进行时间设置,通过子进程模板children_process.spawn创建一个子进程来对图片文件夹进行轮询的命令,并在对图片文件夹进行轮询的命令后设置清除轮询clearTimeout。
作为一种实施方式,安装node.js平台上的邮件发送模块即nodemailer,通过nodemailer.createTransport方法创建一个邮件发送实例,在邮件发送实例中通过mailTransport.sendMail方法发送邮件,在配置参数邮件主题、发送方、接收方邮箱、以及邮件内容后,将图片文件夹可以通过attachments参数配置附件名字跟附件地址,实现在固定时间或固定规则下将图片文件夹以邮件方式发送。
可以理解的是,在步骤S91以及步骤S92中创建对所述图片文件夹进行发送的进程,并基于时间轮询通过进程将图片文件夹进行发送,避免个别图片文件夹不能成功发送而影响所有图片文件夹的发送,提高图片文件夹发送的效率。
作为一种实施方式,可以通过即时消息推送的形式将图片文件夹进行发送,例如通过微信、钉钉等软件将图片文件夹进行发送。
作为一种实施方式,可以通过邮件或者即时消息的方式将步骤S8中得到的压缩文件进行发送,具体方式和上述通过邮件或者即时消息的方式发送在步骤S91以及步骤S92中的图片文件夹的方式类似,这里不再赘述。
请参看图8,图8为本申请实施例提供的一种生成网页截图的装置的示意图。生成网页截图的装置90包括:
实例创建模块901,用于基于网页框架创建浏览器实例并对浏览器实例进行输入接口编写得到浏览器输入接口,浏览器输入接口的入参包括浏览器实例的页面地址。
校验模块902,用于基于用户截图请求的请求头中的cookie对浏览器输入接口进行校验并创建对浏览器输入接口进行调用的调用文件,调用文件中包含cookie。
页面创建模块903,用于遍历浏览器实例的各个页面地址异步创建对应的Promise对象,并在Promise对象中创建页面对象。
设置模块904,用于针对浏览器实例的每个页面地址,通过页面对象中的页面打开函数打开所述页面地址并设置浏览器等待时间。
渲染模块905,用于将调用文件中的cookie写入页面对象得到写入页面,并基于写入页面、浏览器等待时间以及预设条件进行页面跳转得到渲染页面,预设条件为判断写入页面完成跳转的条件。
截图模块906,用于在渲染页面中选定目标对象,基于截图函数得到选定的目标对象的截图对象。
生成模块907,用于将截图对象放置在画布中并添加水印后得到带水印截图。
可选地,实例创建模块901用于:
通过koa2框架搭建浏览器运行环境,并在运行环境中安装工具引擎pupeteer,基于工具引擎pupeteer创建所述浏览器实例,编写浏览器实例的输入接口,输入接口的入参包括所述浏览器实例的页面地址。
可选地,校验模块902用于:
通过ctx.cookie读取请求头中的cookie,通过cookie对浏览器输入接口进行校验得到校验结果,当校验结果显示请求头通过校验时,通过fs.mkdir创建调用文件,调用文件中包括cookie。
可选地,页面创建模块903用于:
通过promise.all方法对浏览器实例的各个页面地址进行遍历得到遍历进行对象创建得到每个页面地址对应的promise对象,通过browser.newPage方法在每个promise对象中创建页面得到promise对象对应的页面对象。
可选地,截图模块906用于:
在渲染页面中选定所述目标对象,调用Chrome DevToolsProtocal中的captureScreenshot方法对目标对象进行截图得到截图对象。
可选地,生成模块907用于:
通过page.evalute函数的document.createElement方法创建画布,通过drawImage方法将截图对象放置在所述画布中,通过canvas.fillText方法对截图对象添加水印得到带水印截图,将带水印截图转换为指定格式,通过调用writeFileSync方法生成带水印截图的图片,并保存在图片文件夹中。
可选地,生成网页截图的装置90还包括压缩模块908,压缩模块908用于:
通过fs.createReadStream方法创建读文件流读入图片文件夹生成文件流,通过zlib.DeflateRaw方法对文件流进行压缩得到压缩文件流,通过crc32算法对压缩文件流的数据完整性校验得到验证结果,当验证结果显示所述压缩文件流通过校验时,通过fs.createReadStream方法创建写文件流,通过写文件流将压缩文件流写入压缩文件。
可选地,生成网页截图的装置90还包括发送模块909,发送模块909用于:
基于浏览器实例的输出配置参数,创建时间轮询,创建对图片文件夹进行发送的进程,并基于时间轮询通过进程将所述图片文件夹进行发送。
本实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任意方法中的步骤。
本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行上述任意方法中的步骤。
综上所述,本申请的实施例提供了一种生成网页截图的方法、装置及电子设备,涉及数据处理技术领域,所述生成网页截图的方法包括:基于网页框架创建浏览器实例并对所述浏览器实例进行输入接口编写得到浏览器输入接口,所述浏览器输入接口的入参包括所述浏览器实例的页面地址。基于用户截图请求的请求头中的cookie对所述浏览器输入接口进行校验并创建对所述浏览器输入接口进行调用的调用文件,所述调用文件中包含所述cookie。遍历所述浏览器实例的各个所述页面地址异步创建对应的promise对象,并在所述promise对象中创建页面对象。针对所述浏览器实例的每个所述页面地址,通过页面对象中的页面打开函数打开所述页面地址并设置浏览器等待时间。将所述调用文件中的所述cookie写入所述页面对象得到写入页面,并基于所述写入页面、所述浏览器等待时间以及预设条件进行页面跳转得到渲染页面,所述预设条件为判断所述写入页面完成跳转的条件。在所述渲染页面中选定目标对象,并基于截图函数得到选定的所述目标对象的截图对象,将所述截图对象放置在画布中并添加水印后得到带水印截图。
在上述实现过程中,在同一浏览器实例中针对所述浏览器实例中各个页面地址创建所述页面地址异步创建对应的promise对象,并基于对应的promise对象创建页面对象,针对对应的页面对象进行页面打开、浏览器等待时间设置并根据判决条件在确定写入页面完成渲染得到渲染页面,在对应的所述渲染页面上选定需要进行截图的所述目标对象,对对应得到的所述目标对象利用截图函数进行截图操作得到截图对象,能够批量处理同一浏览器实例中多个页面地址对应下的截图操作并得到各个页面地址对应的截图对象,在将截图对象放入所述画布中添加水印得到带水印截图,不需要人工方式逐个针对每一个页面地址进行截图操作,能够提高得到截图的效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种生成网页截图的方法,其特征在于,所述方法包括:
基于网页框架创建浏览器实例并对所述浏览器实例进行输入接口编写得到浏览器输入接口,所述浏览器输入接口的入参包括所述浏览器实例的页面地址;
基于用户截图请求的请求头中的cookie对所述浏览器输入接口进行校验并创建对所述浏览器输入接口进行调用的调用文件,所述调用文件中包含所述cookie;
遍历所述浏览器实例的各个所述页面地址异步创建对应的promise对象,并在所述promise对象中创建页面对象;
针对所述浏览器实例的每个所述页面地址,通过页面对象中的页面打开所述页面地址并设置浏览器等待时间;
将所述调用文件中的所述cookie写入所述页面对象得到写入页面,并基于所述写入页面、所述浏览器等待时间以及预设条件进行页面跳转得到渲染页面,所述预设条件为判断所述写入页面完成跳转的条件;
在所述渲染页面中选定目标对象,并基于截图函数得到选定的所述目标对象的截图对象;
将所述截图对象放置在画布中并添加水印后得到带水印截图。
2.根据权利要求1所述的方法,其特征在于,所述基于网页框架创建浏览器实例并对所述浏览器实例进行输入接口编写得到浏览器输入接口,所述浏览器输入接口的入参包括所述浏览器实例的页面地址,包括:
通过koa2框架搭建浏览器运行环境,并在所述运行环境中安装工具引擎pupeteer;
基于所述工具引擎pupeteer创建所述浏览器实例;
编写所述浏览器实例的输入接口,所述输入接口的入参包括所述浏览器实例的所述页面地址。
3.根据权利要求1所述的方法,其特征在于,所述基于用户截图请求的请求头中的cookie对所述浏览器输入接口进行校验并创建对所述浏览器输入接口进行调用的调用文件,所述调用文件中包含所述cookie,包括:
通过ctx.cookie读取所述请求头中的cookie;
通过所述cookie对所述浏览器输入接口进行校验得到校验结果;
当所述校验结果显示所述请求头通过校验时,通过fs.mkdir创建调用文件,所述调用文件中包括所述cookie。
4.根据权利要求1所述的方法,其特征在于,所述遍历所述浏览器实例的各个所述页面地址异步创建对应的promise对象,并在所述promise对象中创建页面对象,包括:
通过promise.all方法对所述浏览器实例的各个所述页面地址进行遍历得到遍历进行对象创建得到每个所述页面地址对应的promise对象;
通过browser.newPage方法在每个所述promise对象中创建页面得到所述promise对象对应的页面对象。
5.根据权利要求1所述的方法,其特征在于,所述在所述渲染页面中选定目标对象,并基于截图函数得到选定的所述目标对象的截图对象,包括:
在所述渲染页面中选定所述目标对象,调用Chrome DevToolsProtocal中的captureScreenshot方法对所述目标对象进行截图得到截图对象。
6.根据权利要求1所述的方法,其特征在于,所述将所述截图对象放置在画布中并添加水印后得到带水印截图并将所述带水印截图,包括:
通过page.evalute函数的document.createElement方法创建画布;
通过drawImage方法将所述截图对象放置在所述画布中;
通过canvas.fillText方法对所述截图对象添加水印得到所述带水印截图;
将所述带水印截图转换为指定格式,通过调用writeFileSync方法生成所述带水印截图的图片,并保存在图片文件夹中。
7.根据权利要求6所述的方法,其特征在于,在所述将所述截图对象放置在画布中并添加水印后得到带水印截图之后,所述方法还包括:
通过fs.createReadStream方法创建读文件流读入所述图片文件夹生成文件流;
通过zlib.DeflateRaw方法对所述文件流进行压缩得到压缩文件流;
通过crc32算法对所述压缩文件流的数据完整性校验得到验证结果;
当所述验证结果显示所述压缩文件流通过校验时,通过fs.createReadStream方法创建写文件流;
通过所述写文件流将所述压缩文件流写入压缩文件。
8.根据权利要求6所述的方法,所述浏览器输入接口的入参包括所述浏览器实例的输出配置参数,其特征在于,在所述将所述截图对象放置在画布中并添加水印后得到带水印截图之后,所述方法还包括:
基于所述浏览器实例的输出配置参数,创建时间轮询;
创建对所述图片文件夹进行发送的进程,并基于所述时间轮询通过所述进程将所述图片文件夹进行发送。
9.一种生成网页截图的装置,其特征在于,所述装置包括:
实例创建模块,用于基于网页框架创建浏览器实例并对所述浏览器实例进行输入接口编写得到浏览器输入接口,所述浏览器输入接口的入参包括所述浏览器实例的页面地址;
校验模块,用于基于用户截图请求的请求头中的cookie对所述浏览器输入接口进行校验并创建对所述浏览器输入接口进行调用的调用文件,所述调用文件中包含所述cookie;
页面创建模块,用于遍历所述浏览器实例的各个所述页面地址异步创建对应的Promise对象,并在所述Promise对象中创建页面对象;
设置模块,用于针对所述浏览器实例的每个所述页面地址,通过页面对象中的页面打开函数打开所述页面地址并设置浏览器等待时间;
渲染模块,用于将所述调用文件中的所述cookie写入所述页面对象得到写入页面,并基于所述写入页面、所述浏览器等待时间以及预设条件进行页面跳转得到渲染页面,所述预设条件为判断所述写入页面完成跳转的条件;
截图模块,用于在所述渲染页面中选定目标对象,基于截图函数得到选定的所述目标对象的截图对象;
生成模块,用于将所述截图对象放置在画布中并添加水印后得到带水印截图。
10.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-8中任一项所述方法中的步骤。
CN202110323020.2A 2021-03-25 2021-03-25 生成网页截图的方法、装置及电子设备 Active CN113032707B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110323020.2A CN113032707B (zh) 2021-03-25 2021-03-25 生成网页截图的方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110323020.2A CN113032707B (zh) 2021-03-25 2021-03-25 生成网页截图的方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN113032707A CN113032707A (zh) 2021-06-25
CN113032707B true CN113032707B (zh) 2023-01-31

Family

ID=76473999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110323020.2A Active CN113032707B (zh) 2021-03-25 2021-03-25 生成网页截图的方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN113032707B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924723A (zh) * 2022-05-09 2022-08-19 北京达佳互联信息技术有限公司 页面呈现方法、装置、电子设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014032589A1 (en) * 2012-08-29 2014-03-06 Tencent Technology (Shenzhen) Company Limited Window switching method and apparatus
CN104462125A (zh) * 2013-09-18 2015-03-25 腾讯科技(深圳)有限公司 生成网页截图的方法及装置
CN106227780A (zh) * 2016-07-18 2016-12-14 中国科学院信息工程研究所 一种海量网页的自动化截图取证方法和系统
CN106406851A (zh) * 2016-08-24 2017-02-15 北京松鼠山科技有限公司 一种网页截图方法、系统
CN108279966A (zh) * 2018-02-13 2018-07-13 广东欧珀移动通信有限公司 网页截图方法、装置、终端及存储介质
CN109491744A (zh) * 2018-11-06 2019-03-19 成都知道创宇信息技术有限公司 一种网页截图系统和方法
CN110020231A (zh) * 2017-07-25 2019-07-16 阿里巴巴集团控股有限公司 网页截图方法及其装置
CN111325652A (zh) * 2018-12-17 2020-06-23 北京京东尚科信息技术有限公司 信息嵌入、提取方法及装置、设备、计算机可读存储介质
CN112380478A (zh) * 2020-11-17 2021-02-19 平安养老保险股份有限公司 网页截图方法、装置、计算机设备及计算机可读存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014032589A1 (en) * 2012-08-29 2014-03-06 Tencent Technology (Shenzhen) Company Limited Window switching method and apparatus
CN104462125A (zh) * 2013-09-18 2015-03-25 腾讯科技(深圳)有限公司 生成网页截图的方法及装置
CN106227780A (zh) * 2016-07-18 2016-12-14 中国科学院信息工程研究所 一种海量网页的自动化截图取证方法和系统
CN106406851A (zh) * 2016-08-24 2017-02-15 北京松鼠山科技有限公司 一种网页截图方法、系统
CN110020231A (zh) * 2017-07-25 2019-07-16 阿里巴巴集团控股有限公司 网页截图方法及其装置
CN108279966A (zh) * 2018-02-13 2018-07-13 广东欧珀移动通信有限公司 网页截图方法、装置、终端及存储介质
CN109491744A (zh) * 2018-11-06 2019-03-19 成都知道创宇信息技术有限公司 一种网页截图系统和方法
CN111325652A (zh) * 2018-12-17 2020-06-23 北京京东尚科信息技术有限公司 信息嵌入、提取方法及装置、设备、计算机可读存储介质
CN112380478A (zh) * 2020-11-17 2021-02-19 平安养老保险股份有限公司 网页截图方法、装置、计算机设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于可视块的多记录型复杂网页信息提取算法;王卫红等;《计算机科学》;20190812;第46卷(第10期);第63-70页 *

Also Published As

Publication number Publication date
CN113032707A (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
US7917767B2 (en) Method and apparatus for adding signature information to electronic documents
CN102799383B (zh) 移动终端屏幕截图方法、屏幕截图装置
US20050254091A1 (en) Means to facilitate delivery of electronic documents into a postal network
US8929686B2 (en) Method and system for deterministic document quality assurance
JP2007081452A (ja) 画像処理方法、画像処理装置、プログラムコード及び記憶媒体
CN114818618B (zh) 一种基于签名加密的文档编辑的方法和系统及介质
CN110474836A (zh) 一种邮件模板生成方法、装置、计算设备和介质
CN113032707B (zh) 生成网页截图的方法、装置及电子设备
CN107145569A (zh) 文档管理方法及装置
CN114781344A (zh) 采用阅读器安全解析渲染工作流电子表单的方法及阅读器
CN109309612B (zh) 邮件内容生成方法及装置、存储介质和电子设备
US20060203255A1 (en) System for certifying whether printed material corresponds to original
EP1408433A1 (en) Hybrid digital signatures
CN111553450B (zh) 二维码生成、验证的方法及装置
CN102855602B (zh) 一种图片处理方法和装置
JP4215255B2 (ja) デグレード確認検査方法、デグレード確認検査システム、およびそのためのプログラム
US8130408B2 (en) Image forming system and data processing method
JP4809637B2 (ja) 文字認識システム及び文字認識方法
CN107844983B (zh) 信息防伪鉴定方法及系统
CN104537516A (zh) 一种新型电子邮件系统限制邮件附件只读的系统及方法
JP2020198043A (ja) 端末装置、文字認識システム及び文字認識方法
CN111079375A (zh) 一种信息整理的方法、装置、计算机存储介质及终端
CN104143108A (zh) 基于条形码实现动作指令的方法和装置
CN111597781B (zh) 非结构化大数据生成方法、系统、存储介质及电子设备
Kwok et al. An automatic electronic contract document signing system in a secure environment

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