CN111324317B - 本地打印面单方法、装置、设备及存储介质 - Google Patents
本地打印面单方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111324317B CN111324317B CN202010098186.4A CN202010098186A CN111324317B CN 111324317 B CN111324317 B CN 111324317B CN 202010098186 A CN202010098186 A CN 202010098186A CN 111324317 B CN111324317 B CN 111324317B
- Authority
- CN
- China
- Prior art keywords
- printing
- file
- template
- local
- local service
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000006870 function Effects 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims 1
- 238000004422 calculation algorithm Methods 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008719 thickening Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 229910002804 graphite Inorganic materials 0.000 description 1
- 239000010439 graphite Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1211—Improving printing performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1224—Client or server resources management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1275—Print workflow management, e.g. defining or changing a workflow, cross publishing
- G06F3/1276—Print workflow management, e.g. defining or changing a workflow, cross publishing within a printer driver, e.g. driver resides either on a server or on a client
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1284—Local printer device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
本发明公开了一种本地打印面单方法、装置、设备及存储介质。该方法包括:获取外部程序和/或终端发送的带有待打印的面单数据和调用本地打印服务的调用指令的打印请求,调用DES算法对面单数据进行解密,得到具体的打印数据,从本地服务内存中查询对应的打印模板,并将订单报文中携带的信息填写到本地服务存储的模板文件中得到打印矢量文件,根据调用指令从本地服务中的调度对应的打印机,并进行打印,实现了模板文件的在线配置和本地存储,直接在本地服务中进行面单的生成,以及在本地进行打印驱动的调用,无需依赖浏览器或者外部组件,解决了传统打印控件兼容性差,本地的打印机调用可以实现满负荷的工作,提高打印效率和使用体验。
Description
技术领域
本发明涉及面单打印技术领域,尤其涉及一种本地打印面单方法、装置、设备及存储介质。
背景技术
传统的纸质面单打印方式是针式打印机打印,使用的耗材是石墨盒和传统四联单纸张,打印速度慢,平均速度2秒打印一张面单,打印使用的工具是***自研的打印工具,设置打印模板,调用打印机驱动进行打印,打印工具不够灵活,传统的打印服务是基于浏览器JS方法打印,一个打印服务控件不能做到支持所有浏览器,兼容性差。
发明内容
本发明的主要目的在于解决传统打印控件的兼容性差,且必须依赖浏览器内核才能调用打印驱动的技术问题。
本发明第一方面提供了一种本地打印面单方法,所述本地打印面单方法包括:
获取外部程序和/或终端发送的打印请求,其中,所述打印请求包括待打印的面单数据;
对所述面单数据进行解密,得到订单报文和打印模板类型;
根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件;其中,所述打印模板为所述本地服务通过服务端监控接口从服务端同步得到的模板文件。
可选的,在本发明第一方面的第一种实现方式中,在所述获取外部程序和/或终端发送的打印请求之前,还包括:
通过定时器控制所述本地服务启动,并请求所述服务端监控接口获取所述服务端上的模板文件的版本号;
比较所述版本号与所述本地服务内存中存储的模板文件的版本号是否相同;
若不相同,则将所述服务端上的模板文件替换所述本地服务内存中的模板文件。
可选的,在本发明第一方面的第二种实现方式中,所述将所述服务端上的模板文件替换所述本地服务内存中的模板文件包括:
下载所述服务端中最新的版本号对应的模板文件;
将所述模板文件按照键-值key_value文件流形式进行转换,得到模板文件存储表;
将所述模板文件存储表替换所述若所述本地服务内存中的模板文件存储表。
可选的,在本发明第一方面的第三种实现方式中,在所述将所述服务端上的模板文件替换所述本地服务内存中的模板文件之后,还包括:
启动所述本地服务中的Web服务的jetty容器服务,并基于所述jetty容器服务对外部程序和/或终端提供请求面单打印操作的http服务;
所述获取外部程序和/或终端发送的打印请求包括:
通过所述http服务,获取所述外部程序和/或终端根据待打印的面单数据生成的打印请求。
可选的,在本发明第一方面的第四种实现方式中,所述所述外部程序和/或终端根据待打印的面单数据生成的打印请求,通过以下步骤得到:
所述外部程序和/或终端采集待打印的面单报文,并将所述面单报文进行DES加密,得到密文报文;
根据所述面单报文选择对应的模板标识号、面单报文的文档类型和打印机参数;
按照键-值key_value文件流形式,根据所述密文报文、模板标识号、文档类型和打印机参数生成key_value文件流,并嵌入至请求中。
可选的,在本发明第一方面的第五种实现方式中,若所述面单数据中包含有至少两个面单报文时,所述根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件包括:
将所述至少两个面单报文中携带的信息分别填写到所述打印模板中,得到至少两个面单文件流;
采用拼接字符依次将所述至少两个面单文件流进行串接,得到字符串文件流;
通过PDF转换工具将所述字符串文件流逐一绘制成PDF面单;
调用所述本地打印服务的预设调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印。
可选的,在本发明第一方面的第六种实现方式中,所述根据所述调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印包括:
解析所述调用指令中的打印机参数;
根据所述打印机参数,通过Web服务中的JS脚本调用本地服务的函数ACTIONSCRIPT 的printers()函数从所述打印机驱动列表查询对应的打印机名称;
将所述打印矢量文件发送至所述打印机名称对应的打印机进行打印。
本发明第二方面提供了一种本地打印面单装置,所述本地打印面单装置包括:
采集模块,用于获取外部程序和/或终端发送的打印请求,其中,所述打印请求包括待打印的面单数据;
解密模块,用于对所述面单数据进行解密,得到订单报文和打印模板类型;
文件打印模块,用于根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件;其中,所述打印模板为所述本地服务通过服务端监控接口从服务端同步得到的模板文件。
可选的,在本发明第二方面的第一种实现方式中,所述本地打印面单装置还包括更新模块,其具体用于:
通过定时器控制所述本地服务启动,并请求所述服务端监控接口获取所述服务端上的模板文件的版本号;
比较所述版本号与所述本地服务内存中存储的模板文件的版本号是否相同;
若不相同,则将所述服务端上的模板文件替换所述本地服务内存中的模板文件。
可选的,在本发明第二方面的第二种实现方式中,所述更新模块具体用于:
下载所述服务端中最新的版本号对应的模板文件;
将所述模板文件按照键-值key_value文件流形式进行转换,得到模板文件存储表;
将所述模板文件存储表替换所述若所述本地服务内存中的模板文件存储表。
可选的,在本发明第三方面的第五种实现方式中,所述本地打印面单装置还包括http服务模块,其具体用于:启动所述本地服务中的Web服务的jetty容器服务,并基于所述jetty容器服务对外部程序和/或终端提供请求面单打印操作的http服务;
所述采集模块用于通过所述http服务,获取所述外部程序和/或终端根据待打印的面单数据生成的打印请求。
可选的,在本发明第二方面的第四种实现方式中,所述本地打印面单装置还包括面单数据生成模块,其具体用于:
控制所述外部程序和/或终端采集待打印的面单报文,并将所述面单报文进行DES加密,得到密文报文;
根据所述面单报文选择对应的模板标识号、面单报文的文档类型和打印机参数;
按照键-值key_value文件流形式,根据所述密文报文、模板标识号、文档类型和打印机参数生成key_value文件流,并嵌入至请求中。
可选的,在本发明第二方面的第五种实现方式中,所述文件打印模块包括数据填写单元、拼接单元、绘制单元和打印单元,其具体用于:
所述数据填写单元用于将所述至少两个面单报文中携带的信息分别填写到所述打印模板中,得到至少两个面单文件流;
所述拼接单元用于采用拼接字符依次将所述至少两个面单文件流进行串接,得到字符串文件流;
所述绘制单元用于通过PDF转换工具将所述字符串文件流逐一绘制成PDF面单;
所述打印单元用于调用所述本地打印服务的预设调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印。
可选的,在本发明第二方面的第六种实现方式中,所述打印单元具体用于:
解析所述调用指令中的打印机参数;
根据所述打印机参数,通过Web服务中的JS脚本调用本地服务的函数ACTIONSCRIPT 的printers()函数从所述打印机驱动列表查询对应的打印机名称;
将所述打印矢量文件发送至所述打印机名称对应的打印机进行打印。
本发明第三方面提供了一种本地打印面单设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述本地打印面单设备执行上述的本地打印面单方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的本地打印面单方法。
本发明提供的技术方案中,获取外部程序和/或终端发送的带有待打印的面单数据和调用本地打印服务的调用指令的打印请求,调用DES算法对所述面单数据进行解密,得到订单报文和打印模板类型,据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述本地服务通过服务端监控接口从服务端同步得到的模板文件中,绘制成面单的打印矢量文件,并对所述打印矢量文件进行打印;通过上述的实施,实现了模板文件的在线同步和本地存储,在打印时,直接在本地服务中进行面单的生成,以及在本地进行打印驱动的调用,无需依赖浏览器或者外部组件,解决了传统打印控件兼容性差,同时这样的模板文件设置,便于管理和维护,本地的打印机调用可以实现满负荷的工作,提高打印效率和使用体验。
附图说明
图1为本发明实施例中本地打印面单方法的第一个实施例示意图;
图2为本发明实施例中本地打印面单方法的第二个实施例示意图;
图3为本发明实施例提供的本地服务获取打印驱动和模板文件的具体流程示意图;
图4为本发明实施例中提供的面单打印的具体流程示意图;
图5为本发明实施例中本地打印面单方法的第三个实施例示意图;
图6为本发明实施例中本地打印面单装置的第一个实施例示意图;
图7为本发明实施例中本地打印面单装置的第二个实施例示意图;
图8为本发明本地打印面单设备一实施例的结构示意图。
具体实施方式
本发明实施例提供了一种本地打印面单方法、装置、设备及存储介质,其中,该本地打印面单方法方法通过提供实用的本地打印程序,能够将服务端配置好的模板文件,下载到本地,当有外部程序将打印数据发送到此本地服务时,本地服务实用接收的数据生成打印文件,然后将打印文件输出到打印机驱动,实现打印。该种实施例方式可以实现模板在线配置,便于管理和维护,同时也可批量调用打印驱动,实现打印机满负荷工作,解决传统打印控件兼容性差问题,本地服务不依赖浏览器内核来调用打印驱动,直接调用windows本地打印驱动。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中本地打印面单方法的一个实施例包括:
101、获取外部程序和/或终端发送的打印请求。
可以理解的是,本发明方法实施例的执行主体可以为本地打印面单装置,还可以是终端或者服务器或者终端上操作***中的某一部分功能主体,具体此处不做限定。本发明实施例具体以终端上操作***中的某一部分功能主体为执行主体为例进行说明。
本实施例中,该打印请求包括待打印的面单数据和调用本地打印服务的调用指令,其面单数据可以理解为是订单中的寄件人信息、收件人信息以及商品信息等等。而调用指令主要是用来调用本地服务中的打印机,其可以设置在打印请求中,也可以不设置在打印请求中,若不设置时,则在本地服务接收到请求后,会根据本地服务中的默认打印机设置来选择打印机进行面单的打印。
在本实施例中,这里的打印请求可以是本地服务直接从外部程序或者是与本地服务临时连接的终端上读取得到,也可以是由外部程序或者是与本地服务临时连接的终端主动发送过来接收得到。
在实际应用中,在该步骤之前,还包括启动本地服务实时对打印机驱动的版本进行校验,以及对服务端上的模板文件的版本进行校验,每次校验到有更新时,都需要重复执行从服务器下载面单的模板文件,并存储在本地服务的内存中,同时还需要更新获取本地服务上的打印机驱动列表,即是打印机列表。在实际应用中,这里的实时对打印机驱动的版本校验具体包括两个校验过程,分别是打印机的驱动版本和本地服务软件版本,若检验为两者中有一个不一致,则确定为有更新,并从服务端中下载对应的文件对本地服务进行更新。
进一步的,基于更新后的打印信息,启动web服务的jetty容器服务,提供http服务,然后基于该http服务接收外部程序和/或终端中产生的打印请求,并对打印请求进行解析处理,得到面单数据和/或打印机的调用指令,该调用指令中包含有带调用的打印机的参数。
102、对所述面单数据进行解密,得到订单报文和打印模板类型。
在本实施例中,这里的解密具体可以采用DES算法进行解密,而所述DES算法由服务端提供,具体是本地服务与服务端进行握手协议进行协商,协商完成后,在本地服务接收到外部程序发送过来的打印面单数据后,根据协商好的加解密算法对接收到的打印面单数据进行解密,得到订单报文,在实际应用中,这里解密后的订单报文是面单的明文报文数据,当然若是存在多级解密的,则经过DES算法解密后的报文可以是明文数据,也可能是密文数据,具体需要根据用户在使用过程中设置的DES算法属于哪级的解密算法。
在实际应用中,该DES算法限定的加密和解密的密钥是向量密钥,基于向量密钥对数据进行解密,得到面单的具体数据;进一步的,将明文报文做成数据表格。
在本实施例中,这里的打印模板类型具体可以使用模板标识来代替,在实际应用中,在从服务端中下载多个模板文件后(不同的快递公司有不同的快递模板,以及各快递公司又有不同版本的快递模板),本地服务将其存储到内存的过程中,还包括下载的模板文件唯一的标识符,基于该标识符和模板文件的版本号建立对应关系,形成一个对应关系表,在实际应用中,这里的标识符可以是由服务端上的生成规则来生成得到,若是这样的情况,标识符则是唯一规则确定,无需服务端与本地服务进行协商,当然所述标识符还可以是由本地服务端上的使用习惯或者用户来自定义排号,这样的话,则需要返回给服务端进行备案,并同步给其他的本地服务。在使用时,外部程序根据不同的订单选择不同的模板文件来输出对应的订单信息,该订单信息是通过模板标识符调用对应的模板文件,然后将明文报文中的数据填写到模板文件中,经后续绘制处理以得到PDF文件。
103、根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件。
在本实施例中,所述打印模板为所述本地服务通过服务端监控接口从服务端同步得到的模板文件;在填写得到打印矢量文件时,具体是从订单报文中提取对应的数据值,填写到模板文件中对应的位置。例如订单报文是数据存储列表,列表中标注着项目和项目值,在填写过程中,还包括根据列表中的项目对模板文件进行适应性的修改,基于修改后的模板文件,提取列表中的项目值,添加到模板文件中,以形成打印矢量文件。
在实际应用中,所述打印矢量文件可以理解为是在放大或者缩小的环境中,不会失真,如PDF文件。具体的,可以在数据解密后,形成JSON格式的数据,KEY-VALUE格式,数据中定义了打印面单需要的内容,例如收发件人姓名,电话地址,三段码,单号,用户自定义数据等。然后从内存中取出XML模板定义内容,将JSON中的各个参数填充到模板上,生成PDF文件,最后将PDF文件发送到打印机。使用PDF文件的优点是生成的是矢量文件,打印的文件不会失真,不受分辨率影响。
在本实施例中,对于打印所述矢量文件时,可以根据打印请求中携带的信息来调用打印机进行打印,若打印请求有包含打印机参数则根据指令打印,如果没有打印机参数,则默认打印。若有打印指令,则根据打印指令从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印。
本实施例中,所述调用指令可以理解为是调用的打印机的具体参数,如标号等等,该步骤具体可以通过以下方式实现:
解析所述调用指令中的打印机参数;
根据所述打印机参数,通过Web服务中的JS脚本调用本地服务的函数ACTIONSCRIPT 的printers()函数从所述打印机驱动列表查询对应的打印机名称;
将所述打印矢量文件发送至所述打印机名称对应的打印机进行打印。
在实际应用中,在调用打印机进行面单打印时,具体可以通过以下方式来实现打印机的驱动调用和打印面单数据的输出调用:通过js打印方法,具体使用iframe标签,定义src=url?value=拼接的订单报文&tname=模板&docname=打印方式,即可实现打印。
例如,一个订单调用本地服务打印过程为:
调用方编写调用代码,传递模板,打印方式,订单报文;
本地服务接收value参数,解密后得到订单明文报文;
调用XML模板文件,生成PDF文件流,将文件流发送到打印机打印。
本发明实施例提供的技术方案中,通过提供实用的本地打印程序,能够将服务端配置好的模板文件,下载到本地,当有外部程序将打印数据发送到此本地服务时,本地服务实用接收的数据生成打印文件,然后将打印文件输出到打印机驱动,实现打印;实现了模板文件的在线配置和本地存储,直接在本地服务中进行面单的生成,以及在本地进行打印驱动的调用,无需依赖浏览器或者外部组件,解决了传统打印控件兼容性差,本地的打印机调用可以实现满负荷的工作,提高打印效率和使用体验。
请参阅图2,本发明实施例中本地打印面单方法的另一个实施例,下面对外部程序访问本地打印服务为例对本申请提供的方法做进一步的说明,该方法主要包括两大流程:
201、本地服务启动,并实时监控服务端上的模板文件,以及更新本地的打印机驱动列表和模板文件;
在本实施例中,本地服务运行时会先请求服务端接口,获取最新版本号判断是否需要更新,可选的,这里的版本号应当理解为包括本地服务中的打印机的驱动程序的版本号和生成面单打印文件的模板文件的版本号。在实际应用中,在校验的过程中,如果打印机的驱动版本号一致的情况下,在设定的定时更新时间内可以通过校验模板文件的版本号来进行快速校验,这样可以适当的减少本地服务的数据处理量,若模板文件的版本号获取失败,则停止后续步骤,并继续执行监控服务端的模板文件的操作。版本号获取成功后再下载模板,模板下载成功后再获取本机打印驱动列表。获取打印机列表方法是通过JS调用本地服务的函数ACTIONSCRIPT 的printers()函数获取打印机名称。
在实际应用中,当获取到版本号后,本地服务的打印服务程序将下载的模板文件加载到本地服务的内存中,并以key_value文件流形式载入内存存储,然后启动本地服务中的web服务的jetty容器服务,提供http服务,以便外部程序和/或终端进行打印的请求访问。
202、基于本地更新后的打印机驱动列表和模板文件所提供的打印服务,对外部程序发送的面单打印请求进行本地的面单生成,并输出至打印机进行打印。
在本实施例中,对于接收到的面单打印请求,具体是由外部程序进行加工处理后的密文数据,外部程序在访问本地的打印服务时,具体是通过以下流程来实现对面单的具体内容的处理:
步骤1、外部程序将订单报文DES加密,作为value参数。
步骤2、外部程序向http服务发送请求,带上模板,报文,打印方式等参数。
该步骤中,在向http服务发送请求时,具体是通过向jetty容器发起包含数据内容、模板标识号、文档类型、客户自定义区域数据、打印机参数的请求;
其中,文档类型一般使用PDF数据,选择mailpdfm1(中文解释);打印机参数则根据用户ID获取已选择或常规使用的参数。
步骤3、本地服务接收参数后,对value进行DES解密,使用模板参数找到具体的模板,绘制PDF文件,发送到打印机打印。
在本实施例中,外部程序请求的打印功能将参数通过http接口发送到本地服务,本地服务先对数据解密,可选的,这里的数据加解密方法是DES算法,其加解密密钥是一种向量密钥,具体是由服务端提供,本地服务在打包本地打印服务的EXE程序时,将加解密的算法和密钥固化在程序中,不可更改。
本地服务在接收到外部程序发送过来的密文数据后,通过对应的算法和密钥进行解密后,形成JSON格式的数据,该数据具体是以KEY-VALUE格式形成,数据中定义了打印面单需要的内容,例如收发件人姓名,电话地址,三段码,单号,用户自定义数据等。然后从内存中取出XML模板定义内容,将JSON中的各个参数填充到模板上,生成PDF文件,最后将PDF文件发送到打印机。使用PDF文件的优点是生成的是矢量文件,打印的文件不会失真,不受分辨率影响。
在将面单PDF文件输出至打印机进行打印时,具体可以通过使用iframe标签的方式来控制,通过生成标签定义src=url?value=拼接的订单报文&tname=模板&docname=打印方式,即可实现打印。
例如,一个订单调用本地服务打印过程时,调用方编写调用代码,传递模板,打印方式,订单报文;本地服务接收value参数,解密后得到订单明文报文;调用XML模板文件,生成PDF文件流,将文件流发送到打印机打印。
请参阅图3,为本发明实施例中本地服务获取打印驱动和模板文件的具体流程,该流程包括以下步骤:
301、监控本地打印机驱动的版本号和模板文件的版本号;
302、判断版本号是否需要更新;
在本实施例中,对于版本号的获取具体是包括两个版本号,一个服务端或者是驱动数据库中的,另一种是本地服务的内存中的,而通过监控获取服务端中的和本地服务内存中的,具体的,首先是监控服务端上的版本号,若从服务端上获取到版本号时,则跳转至本地服务内存中获取对应的版本号,最后将两个版本号进行比对,若一致,则不做处理,继续执行步骤301,若不一致,则执行步骤303。
303、若是,则从服务端下载打印模板;
304、从本地服务中获取打印机驱动列表;
305、将所有模板记载到内存,以KEY-VALUE格式存储;
306、启动本地服务的Web服务jetty,监听外部打印请求。
本实施例中,所述启动Web服务jetty主要目的是为外部程序提供http服务接口,例如访问网址,在外部程序基于http服务进行访问时,具体通过向jetty容器发起包含数据内容、模板标识号、文档类型、客户自定义区域数据、打印机参数的请求;
其中,文档类型一般使用PDF数据,选择mailpdfm1;打印机参数则根据用户ID获取已选择或常规使用的参数。
在实际应用中,在向jetty容器发起请求时,可选的通过请求服务url的形式来请求,例如请求为http://ip:port/ydecx/service/mailpx/printDirect.pdf,该URL中定义了面单的数据和面单模板等信息,具体以表格设置,表格设置的方式如下表1所示。
在本实施例中,上述的处理过程可以是对单个面单进行请求打印服务,也可以是批量面单请求打印服务,当是批量时,则需要对面单进行拼接串联处理,形成一个字符串的形式进行发送,具体可以将每条数据通过“@”进行拼接,形成新的字符串。
表1
例如对2个面单进行批量处理时,使用@拼接2个订单报文,报文使用base64_encode编码,如下表2所示:
表2
在本实施例中,当监听到外部程序对本地服务进行面单打印的请求时,本地服务获取请求中的数据,并解密生成面单文件,发送至打印机进行打印,如图4所示,该面单的打印处理流程包括以下步骤:
401、接收所述外部程序发送的打印请求;
402、调用本地服务,对所述打印请求进行解析,得到面单密文报文;
在该步骤中,对打印请求进行解析的过程中,还包括解析打印机的调用指令,该调用指令在打印请求中可有可没有,对于面单有特殊要求的可以设置在请求中,具体设置可以按照上述表1中的方式定义字段。
403、根据打印服务中设置的解密密钥对所述面单密文报文进行解密处理,得到订单报文和模板标识;
404、根据模板标识从本地服务的内存中获取对应的模板;
在实际应用中,对于根据模板标识无法从内存中找到一致的模板文件时,可以通过请求外部程序对面单的模板具体设置信息来选择内存中的相近的模板文件进行修改定义,下面以XML模板文件为例说明定义原理,可选的,通过设置一个定义表格来进行定义,在表格中对模板文件的字号、密钥、内容和内容排版等等,具体如下表3所示:
表3
405、将订单报文填充到模板中,生成PDF文件流;
本实施例中,将请求的数据DES解密后,使用XML模板定义的格式进行填充数据,生成PDF文件,其中在填充数据时,具体是按照xml模板文件定义的每个区域的名称显示内容名称,style定义了显示的样式,例如字体大小,颜色,加粗等,字段值使用key-value进行匹配填充。
下面以列举具体的本地服务URL进行说明:
URL=http://127.0.0.1:9090/ydecx/service/mailpx/printDirect.pdf?tname=xxx&value=xxxx&docname=xxx
提取URL中的寄件人信息,并根据模板中的<block>标签定义进行填充,其填充定义标签代码为:<block style="fjr_style" top="474" left="3" width="177" height="36.85" text="{TM2SENDER_X}" alignment="left"/>,此标签代码定义了寄件人需要从坐标[474,3]的位置开始绘制,宽度177,高度36.85,字体:宋体,样式使用fjr_style,填充的数据使用TM2SENDER_X数据组。其中fjr_style定义为:<style name="fjr_style" style="normal" size="8" family="宋体"/>。
进一步的,对收件人的数据进行填充定义,具体如模板中的数据组TM2SENDER_X,该标签表示发件人数据组,含姓名,电话,公司,地址信息,具体定义如下表4所示。
进一步的,遇到xml文件<line>标签时,则需要在PDF中绘制线条。
生成PDF是二进制文件流,将文件流调用打印机驱动进行PDF文件打印。
表4
406、将PDF文件流发送到打印机上进行打印。
在本实施例中,将请求的数据DES解密后,使用XML模板定义的格式进行填充数据,生成PDF文件,其中,在填充数据时,按照xml模板文件中定义的每个区域的名称显示内容名称,style定义了显示的样式,例如字体大小,颜色,加粗等,字段值使用key-value进行匹配填充,生成PDF文件,最后将PDF文件发送到打印机。本实施例中使用PDF文件的优点是生成的是矢量文件,打印的文件不会失真,不受分辨率影响。
对于在调用本地的打印机是具体通过通过JS调用本地服务的函数ACTIONSCRIPT的printers()函数获取打印机名称。
进一步的,还可以使用iframe标签的方式来调用,具体定义src=url?value=拼接的订单报文&tname=模板&docname=打印方式,即可实现打印。
通过上述实施方式的实施,获取外部程序和/或终端发送的带有待打印的面单数据和调用本地打印服务的调用指令的打印请求,调用DES算法对面单数据进行解密,得到具体的打印数据,从本地服务内存中查询对应的打印模板,并将订单报文中携带的信息填写到本地服务存储的模板文件中得到打印矢量文件,根据调用指令从本地服务中的调度对应的打印机,并进行打印,实现了模板文件的在线配置和本地存储,直接在本地服务中进行面单的生成,以及在本地进行打印驱动的调用,无需依赖浏览器或者外部组件,解决了传统打印控件兼容性差,本地的打印机调用可以实现满负荷的工作,提高打印效率和使用体验。
进一步的,通过本地服务使用jetty容器提供服务,接口支持POST和GET方式,基于jetty提供本地打印的服务提供,使其即使在有大量服务请求的情况下,***的性能也能保持在一个可以接受的状态,并且通过 XML 或者 API 来对Jetty进行配置;默认配置可以满足大部分的需求;将 Jetty 嵌入到应用程序当中只需要非常少的代码。
请参阅图5,本发明实施例中本地打印面单方法的另一个实施例,该方法具体包括以下步骤:
501、接收外部传入参数;
本实施例中,通过接收外部基于本地提供的HTTP服务来访问的打印请求,该请求中包括面单的数据内容、模板标识号、文档类型、客户自定义区域数据、打印机参数。
进一步的,在该步骤之前还包括:通过定时器控制所述本地服务启动,并请求所述服务端监控接口获取所述服务端上的模板文件的版本号;
比较所述版本号与所述本地服务内存中存储的模板文件的版本号是否相同;
若不相同,则将所述服务端上的模板文件下载下来,并替换所述本地服务内存中的模板文件。
在实际应用中,在所述将所述服务端上的模板文件下载下来,并替换所述本地服务内存中的模板文件时,具体为:
下载所述服务端中最新的版本号对应的模板文件;
将所述模板文件按照键-值key_value文件流形式进行转换,得到模板文件存储表;
将所述模板文件存储表替换所述若所述本地服务内存中的模板文件存储表。
502、根据tname找到内存中定义的模板文件;
本实施例中,在从服务端中下载模板文件后,本地服务将其存储到内存的过程中,还包括对下载的模板文件分配唯一的标识符,基于该标识符和模板文件的版本号建立对应关系,形成一个对应关系表,在存储后,本服务将对应关系反馈给服务端;在使用时,外部程序根据不同的订单选择不同的模板文件来输出对应的订单信息,该订单信息是通过模板标识符调用对应的模板文件,然后将明文报文中的数据填写到模板文件中,以得到PDF文件。
503、使用参数中的参数值按照模板key进行填充;
在该步骤中,具体是通过调用DES算法对所述面单数据进行解密,得到订单报文和打印模板类型;其中,DES算法是由服务端提供,同时还包括加解密密钥,该密钥是一种向量密钥,通过该密钥对接收到的参数进行解密后,得到面单的明文数据,并形成JSON格式的数据,KEY-VALUE格式,数据中定义了打印面单需要的内容,例如收发件人姓名,电话地址,三段码,单号,用户自定义数据等。然后从内存中取出XML模板定义内容,将JSON中的各个参数填充到模板上。
504、形成PDF文件流,并输出至打印机进行打印。
在本实施例中,若所述面单数据中包含有至少两个面单报文时,其在形成PDF文件流时,包括:将所述至少两个面单报文中携带的信息分别填写到所述打印模板中,得到至少两个面单文件流;
采用拼接字符依次将所述至少两个面单文件流进行串接,得到字符串文件流;
通过PDF转换工具将所述字符串文件流逐一绘制成PDF面单,然后调用所述本地打印服务的预设调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印。
进一步的,在打印时,通过该外部程序发送过来的请求中的调用指令从所述本地服务中的打印机驱动列表中调度对应的打印机对PDF文件流进行打印,具体的实现可以为:解析所述调用指令中的打印机参数;根据所述打印机参数,通过Web服务中的JS脚本调用本地服务的函数ACTIONSCRIPT 的printers()函数从所述打印机驱动列表查询对应的打印机名称;将所述打印矢量文件发送至所述打印机名称对应的打印机进行打印。
通过上述实施方式的实施,将服务端配置好的模板文件,下载到本地,当有外部程序将打印数据发送到此本地本地服务时,本地服务实用接收的数据生成打印文件,然后将打印文件输出到打印机驱动,实现打印;在整个面单打印的过程中,都是在本地上实现,本地下载模板,本地生成打印文件,调用本地打印机驱动打印,实现了不需要依赖浏览器内核来调用打印驱动,直接调用windows本地打印驱动,解决传统打印控件兼容性差问题,同时,本地的打印机调用可以实现满负荷的工作,提高打印效率和使用体验。
上面对本发明实施例中本地打印面单方法进行了描述,下面对本发明实施例中本地打印面单装置进行描述,请参阅图6,本发明实施例中本地打印面单装置一个实施例包括:
采集模块61,用于获取外部程序和/或终端发送的打印请求,其中,所述打印请求包括待打印的面单数据和调用本地打印服务的调用指令;
解密模块62,用于调用DES算法对所述面单数据进行解密,得到订单报文和打印模板类型;
文件打印模块63,用于根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件;其中,所述打印模板为所述本地服务通过服务端监控接口从服务端同步得到的模板文件。
本发明实施例提供的技术方案中,将服务端配置好的模板文件,下载到本地,当有外部程序将打印数据发送到此本地本地服务时,本地服务实用接收的数据生成打印文件,然后将打印文件输出到打印机驱动,实现打印。 打印服务的特征有:1)模板在线配置,便于管理和维护;2)批量调用打印驱动,实现打印机满负荷工作。3)解决传统打印控件兼容性差问题,本地服务不依赖浏览器内核来调用打印驱动,直接调用windows本地打印驱动,解决传统打印控件兼容性差问题。
请参阅图7,本发明实施例中本地打印面单装置一个实施例包括:
采集模块61,用于获取外部程序和/或终端发送的打印请求,其中,所述打印请求包括待打印的面单数据和调用本地打印服务的调用指令;
解密模块62,用于调用DES算法对所述面单数据进行解密,得到订单报文和打印模板类型;
文件打印模块63,用于根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件;其中,所述打印模板为所述本地服务通过服务端监控接口从服务端同步得到的模板文件;
打印模块64,用于根据所述调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印。
可选的,所述打印文件生成模块63包括数据填写单元631、拼接单元632绘制单元633和打印单元634,其具体用于:
所述数据填写单元631用于将所述至少两个面单报文中携带的信息分别填写到所述打印模板中,得到至少两个面单文件流;
所述拼接单元632用于采用拼接字符依次将所述至少两个面单文件流进行串接,得到字符串文件流;
所述绘制单元633用于通过PDF转换工具将所述字符串文件流逐一绘制成PDF面单;
所述打印单元634用于调用所述本地打印服务的预设调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印。
可选的,所述打印单元634具体用于:
解析所述调用指令中的打印机参数;
根据所述打印机参数,通过Web服务中的JS脚本调用本地服务的函数ACTIONSCRIPT 的printers()函数从所述打印机驱动列表查询对应的打印机名称;
将所述打印矢量文件发送至所述打印机名称对应的打印机进行打印。
可选的,所述本地打印面单装置还包括更新模块64,其具体用于:
通过定时器控制所述本地服务启动,并请求所述服务端监控接口获取所述服务端上的模板文件的版本号;
比较所述版本号与所述本地服务内存中存储的模板文件的版本号是否相同;
若不相同,则将所述服务端上的模板文件下载下来,并替换所述本地服务内存中的模板文件。
可选的,所述更新模块64具体用于:
下载所述服务端中最新的版本号对应的模板文件;
将所述模板文件按照键-值key_value文件流形式进行转换,得到模板文件存储表;
将所述模板文件存储表替换所述若所述本地服务内存中的模板文件存储表。
可选的,所述本地打印面单装置还包括http服务模块65,其具体用于:启动所述本地服务中的Web服务的jetty容器服务,并基于所述jetty容器服务对外部程序和/或终端提供请求面单打印操作的http服务;
所述采集模块用于通过所述http服务,获取所述外部程序和/或终端根据待打印的面单数据生成的打印请求。
可选的,所述本地打印面单装置还包括面单数据生成模块67,其具体用于:
控制所述外部程序和/或终端采集待打印的面单报文,并将所述面单报文进行DES加密,得到密文报文;
根据所述面单报文选择对应的模板标识号、面单报文的文档类型和打印机参数;
按照键-值key_value文件流形式,根据所述密文报文、模板标识号、文档类型和打印机参数生成key_value文件流,并嵌入至请求中。
基于与上述本发明本地打印面单方法相同的实施例说明内容,因此本实施例对本地打印面单装置的实施例内容不做过多赘述。
上面图6-7从模块化功能实体的角度对本发明实施例中的本地打印面单装置进行详细描述,下面从硬件处理的角度对本发明实施例中本地打印面单设备进行详细描述。
图8是本发明本地打印面单设备一实施例的结构示意图,该本地打印面单设备1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)1010(例如,一个或一个以上处理器)和存储器1020,一个或一个以上存储应用程序1033或数据1032的存储介质1030(例如一个或一个以上海量存储设备)。其中,存储器1020和存储介质1030可以是短暂存储或持久存储。存储在存储介质1030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对XXX设备1000中的一系列指令操作。更进一步地,处理器1010可以设置为与存储介质1030通信,在本地打印面单设备1000上执行存储介质1030中的一系列指令操作。
基于本地打印面单设备1000还可以包括一个或一个以上电源1040,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1060,和/或,一个或一个以上操作***1031,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图8示出的本地打印面单设备结构并不构成对基于本地打印面单设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在本实施例中,对于上述的本地打印面单装置还可以通过两部分结构组成的***,分别是移动终端和本地服务设备,该本地服务设备可以是台式电脑,也可以是现在的打印机设备,当然该本地服务设备是由现有的设备中,增设有通过上述实施例提供的本地打印面单方法设置的本地打印服务功能的设备,本地服务设备通过执行上述实施例提供的方法的程序代码来实现从服务端获取模板文件以及更新本地打印机的驱动程序形成的列表,然后启动web服务监控移动终端的打印访问,其中移动终端在访问本地服务的打印功能之前,需要通过对待打印的面单数据进行加密,形成key_value文件流的请求,基于该请求来访问jetty容器,向本地服务设备提供包含面单的数据内容、模板标识号、文档类型、客户自定义区域数据、打印机参数等,本地服务设备根据接收到的请求进行解密,得到明文后,在本地服务的内存中找到对应的模板文件,并填充数据,形成PDF文件流,最后调用本地的打印机对PDF文件流进行打印。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述本地打印面单方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种本地打印面单方法,其特征在于,所述本地打印面单方法包括:
获取外部程序和/或终端发送的打印请求,其中,所述打印请求包括待打印的面单数据;所述获取外部程序和/或终端发送的打印请求之前,还包括启动本地服务实时对打印机驱动的版本进行校验,实时对打印机驱动的版本校验具体包括两个校验过程,分别是打印机的驱动版本和本地服务软件版本,若检验为两者中有一个不一致,则确定为有更新,并从服务端中下载对应的文件对本地服务进行更新;
对所述面单数据进行解密,得到订单报文和打印模板类型;
根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件;其中,所述打印模板为所述本地服务通过服务端监控接口从服务端同步得到的模板文件;若所述面单数据中包含有至少两个面单报文时,所述根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件包括:
将所述至少两个面单报文中携带的信息分别填写到所述打印模板中,得到至少两个面单文件流;
采用拼接字符依次将所述至少两个面单文件流进行串接,得到字符串文件流;
通过PDF转换工具将所述字符串文件流逐一绘制成PDF面单;
调用所述本地服务的预设调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印;所述从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印包括:使用iframe标签的方式来调用,具体定义src=url?value=拼接的订单报文&tname=模板&docname=打印方式实现打印。
2.根据权利要求1所述的本地打印面单方法,其特征在于,在所述获取外部程序和/或终端发送的打印请求之前,还包括:
通过定时器控制所述本地服务启动,并请求所述服务端监控接口获取所述服务端上的模板文件的版本号;
比较所述版本号与所述本地服务内存中存储的模板文件的版本号是否相同;
若不相同,则将所述服务端上的模板文件替换所述本地服务内存中的模板文件。
3.根据权利要求2所述的本地打印面单方法,其特征在于,所述将所述服务端上的模板文件替换所述本地服务内存中的模板文件包括:
下载所述服务端中最新的版本号对应的模板文件;
将所述模板文件按照键-值key_value文件流形式进行转换,得到模板文件存储表;
将所述模板文件存储表替换所述本地服务内存中的模板文件存储表。
4.根据权利要求3所述的本地打印面单方法,其特征在于,在所述将所述服务端上的模板文件替换所述本地服务内存中的模板文件之后,还包括:
启动所述本地服务中的Web服务的jetty容器服务,并基于所述jetty容器服务对外部程序和/或终端提供请求面单打印操作的http服务;
所述获取外部程序和/或终端发送的打印请求包括:
通过所述http服务,获取所述外部程序和/或终端根据待打印的面单数据生成的打印请求。
5.根据权利要求4所述的本地打印面单方法,其特征在于,所述外部程序和/或终端根据待打印的面单数据生成的打印请求,通过以下步骤得到:
所述外部程序和/或终端采集待打印的面单报文,并将所述面单报文进行DES加密,得到密文报文;
根据所述面单报文选择对应的模板标识号、面单报文的文档类型和打印机参数;
按照键-值key_value文件流形式,根据所述密文报文、模板标识号、文档类型和打印机参数生成key_value文件流,并嵌入至请求中。
6.根据权利要求5所述的本地打印面单方法,其特征在于,所述调用所述本地服务的预设调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印包括:
解析所述调用指令中的打印机参数;
根据所述打印机参数,通过Web服务中的JS脚本调用本地服务的函数ACTIONSCRIPT的printers()函数从所述打印机驱动列表查询对应的打印机名称;
将所述打印矢量文件发送至所述打印机名称对应的打印机进行打印。
7.一种本地打印面单装置,其特征在于,所述本地打印面单装置包括:
采集模块,用于获取外部程序和/或终端发送的打印请求,其中,所述打印请求包括待打印的面单数据;所述获取外部程序和/或终端发送的打印请求之前,还包括启动本地服务实时对打印机驱动的版本进行校验,实时对打印机驱动的版本校验具体包括两个校验过程,分别是打印机的驱动版本和本地服务软件版本,若检验为两者中有一个不一致,则确定为有更新,并从服务端中下载对应的文件对本地服务进行更新;
解密模块,用于对所述面单数据进行解密,得到订单报文和打印模板类型;
文件打印模块,用于根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件;其中,所述打印模板为所述本地服务通过服务端监控接口从服务端同步得到的模板文件;若所述面单数据中包含有至少两个面单报文时,所述根据所述打印模板类型,从本地服务内存中查询对应的打印模板,并将所述订单报文中携带的信息逐一填写到所述打印模板中,绘制成面单的打印矢量文件,并打印所述矢量文件包括:
将所述至少两个面单报文中携带的信息分别填写到所述打印模板中,得到至少两个面单文件流;
采用拼接字符依次将所述至少两个面单文件流进行串接,得到字符串文件流;
通过PDF转换工具将所述字符串文件流逐一绘制成PDF面单;
调用所述本地服务的预设调用指令,从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印;所述从所述本地服务中的打印机驱动列表中调度对应的打印机,对所述打印矢量文件进行打印包括:使用iframe标签的方式来调用,具体定义src=url?value=拼接的订单报文&tname=模板&docname=打印方式实现打印。
8.一种本地打印面单设备,其特征在于,所述本地打印面单设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述本地打印面单设备执行如权利要求1-6中任一项所述的本地打印面单方法。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的本地打印面单方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010098186.4A CN111324317B (zh) | 2020-02-18 | 2020-02-18 | 本地打印面单方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010098186.4A CN111324317B (zh) | 2020-02-18 | 2020-02-18 | 本地打印面单方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324317A CN111324317A (zh) | 2020-06-23 |
CN111324317B true CN111324317B (zh) | 2024-03-26 |
Family
ID=71163441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010098186.4A Active CN111324317B (zh) | 2020-02-18 | 2020-02-18 | 本地打印面单方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324317B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949229A (zh) * | 2020-07-29 | 2020-11-17 | 唯品会(珠海)电子商务有限公司 | 一种面单打印方法、装置、计算机设备及存储介质 |
CN112035076A (zh) * | 2020-08-25 | 2020-12-04 | 上海中通吉网络技术有限公司 | 基于json的打印解析方法、装置、设备和打印*** |
CN112036803B (zh) * | 2020-11-06 | 2021-01-22 | 上海洋漪信息技术有限公司 | 通用跨境物流配送面单的生成方法 |
CN112506450B (zh) * | 2020-12-08 | 2023-05-09 | 杭州贝嘟科技有限公司 | 水洗唛的生成方法、装置、电子装置和存储介质 |
CN112631531A (zh) * | 2020-12-24 | 2021-04-09 | 艾体威尔电子技术(北京)有限公司 | 一种多渠道云打印*** |
CN113238721B (zh) * | 2021-05-11 | 2022-10-04 | 浪潮软件股份有限公司 | 一种统一政务服务的office模板打印方法 |
CN113434098B (zh) * | 2021-07-09 | 2024-03-01 | 北京京东振世信息技术有限公司 | 打印功能实现方法、装置、电子设备、***和存储介质 |
CN114103506B (zh) * | 2021-09-28 | 2023-04-21 | 环盛智能(深圳)有限公司 | 一种手机后膜打印切割方法 |
CN114780156A (zh) * | 2022-04-24 | 2022-07-22 | 中国工商银行股份有限公司 | 一种外部操作设备的调用方法及装置 |
CN115061646A (zh) * | 2022-08-17 | 2022-09-16 | 深圳美云集网络科技有限责任公司 | 面单打印方法、装置、计算机设备及存储介质 |
CN117827121A (zh) * | 2023-10-23 | 2024-04-05 | 杭州瀚斯科技有限公司 | 批量打印水洗唛的方法及水洗唛打印*** |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2645230A2 (en) * | 2012-03-30 | 2013-10-02 | Brother Kogyo Kabushiki Kaisha | Template processing program and template processing method |
CN103870984A (zh) * | 2014-02-28 | 2014-06-18 | 浪潮软件集团有限公司 | 一种基于云计算的网络***模板控制方法 |
WO2014090060A1 (en) * | 2012-12-13 | 2014-06-19 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for processing a webpage |
CN106406560A (zh) * | 2016-08-29 | 2017-02-15 | 武汉开目信息技术股份有限公司 | 桌面操作***中机械工程字符矢量字体输出方法和*** |
EP3176689A1 (en) * | 2015-12-03 | 2017-06-07 | Ricoh Company Ltd. | Print control program, print control method, computer and networked system |
CN107340981A (zh) * | 2017-07-20 | 2017-11-10 | 深圳市瑞联智造科技有限公司 | 物料标签打印*** |
CN107450869A (zh) * | 2017-08-21 | 2017-12-08 | 百望电子***数据服务有限公司 | 一种pdf电子***版式文件的在线打印***及方法 |
CN108572801A (zh) * | 2017-03-10 | 2018-09-25 | 菜鸟智能物流控股有限公司 | 一种打印处理方法、装置、打印端、物流平台及服务器 |
CN109218011A (zh) * | 2018-09-07 | 2019-01-15 | 山东中磁视讯股份有限公司 | 一种基于md5的移动终端多媒体资源验证方法 |
CN109271759A (zh) * | 2018-09-26 | 2019-01-25 | 杭州凯米科技有限公司 | 基于安卓平台的so文件安全加固技术方法 |
CN109542366A (zh) * | 2018-10-26 | 2019-03-29 | 金蝶软件(中国)有限公司 | 基于浏览器的打印方法、装置、设备和存储介质 |
CN110377248A (zh) * | 2019-07-30 | 2019-10-25 | 佛山青象科技有限公司 | 批量打印控制方法、装置及电子设备 |
CN110413954A (zh) * | 2019-07-29 | 2019-11-05 | 北京北大软件工程股份有限公司 | 制式文件打印预览方法、装置、设备和存储介质 |
CN110780829A (zh) * | 2019-10-15 | 2020-02-11 | 武汉牌洲湾广告科技有限公司 | 基于云服务的广告打印方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9131087B2 (en) * | 2013-02-27 | 2015-09-08 | Ricoh Company, Ltd. | Apparatus, system and method for providing print manager service |
-
2020
- 2020-02-18 CN CN202010098186.4A patent/CN111324317B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2645230A2 (en) * | 2012-03-30 | 2013-10-02 | Brother Kogyo Kabushiki Kaisha | Template processing program and template processing method |
WO2014090060A1 (en) * | 2012-12-13 | 2014-06-19 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for processing a webpage |
CN103870984A (zh) * | 2014-02-28 | 2014-06-18 | 浪潮软件集团有限公司 | 一种基于云计算的网络***模板控制方法 |
EP3176689A1 (en) * | 2015-12-03 | 2017-06-07 | Ricoh Company Ltd. | Print control program, print control method, computer and networked system |
CN106406560A (zh) * | 2016-08-29 | 2017-02-15 | 武汉开目信息技术股份有限公司 | 桌面操作***中机械工程字符矢量字体输出方法和*** |
CN108572801A (zh) * | 2017-03-10 | 2018-09-25 | 菜鸟智能物流控股有限公司 | 一种打印处理方法、装置、打印端、物流平台及服务器 |
CN107340981A (zh) * | 2017-07-20 | 2017-11-10 | 深圳市瑞联智造科技有限公司 | 物料标签打印*** |
CN107450869A (zh) * | 2017-08-21 | 2017-12-08 | 百望电子***数据服务有限公司 | 一种pdf电子***版式文件的在线打印***及方法 |
CN109218011A (zh) * | 2018-09-07 | 2019-01-15 | 山东中磁视讯股份有限公司 | 一种基于md5的移动终端多媒体资源验证方法 |
CN109271759A (zh) * | 2018-09-26 | 2019-01-25 | 杭州凯米科技有限公司 | 基于安卓平台的so文件安全加固技术方法 |
CN109542366A (zh) * | 2018-10-26 | 2019-03-29 | 金蝶软件(中国)有限公司 | 基于浏览器的打印方法、装置、设备和存储介质 |
CN110413954A (zh) * | 2019-07-29 | 2019-11-05 | 北京北大软件工程股份有限公司 | 制式文件打印预览方法、装置、设备和存储介质 |
CN110377248A (zh) * | 2019-07-30 | 2019-10-25 | 佛山青象科技有限公司 | 批量打印控制方法、装置及电子设备 |
CN110780829A (zh) * | 2019-10-15 | 2020-02-11 | 武汉牌洲湾广告科技有限公司 | 基于云服务的广告打印方法、装置、设备及介质 |
Non-Patent Citations (4)
Title |
---|
Paginate Dynamic and Web Content;Giannetti Fabio;《DOCENG 2011: PROCEEDINGS OF THE 2011 ACM SYMPOSIUM ON DOCUMENT ENGINEERING》;20120606;全文 * |
一种大规模的跨平台同源二进制文件检索方法;陈昱;刘中金;赵威威;马原;石志强;孙利民;;计算机研究与发展;20180715(07);全文 * |
反XSS绕过过滤规则设计与研究;王万兵;叶水生;肖璐;;计算机与数字工程;20180420(04);全文 * |
局域网打印管理问答;孙秀洪;;网络安全和信息化;20191205(12);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111324317A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324317B (zh) | 本地打印面单方法、装置、设备及存储介质 | |
CN106713518B (zh) | 设备注册方法和装置 | |
US6505252B1 (en) | Data transfer utilizing preview data | |
CN104025078B (zh) | 用于在与签名人相关联的客户端计算设备上促进电子签名的方法和设备 | |
US8493579B2 (en) | Wireless printing from a device outside the network | |
CN110780829B (zh) | 基于云服务的广告打印方法、装置、设备及介质 | |
JP6439941B2 (ja) | 多機能プリンタ装置、方法及びシステム | |
CN101395441A (zh) | 用于提供密码签署的命令的方法 | |
EP1872516B1 (en) | System and method for secure messaging between wireless device and application gateway | |
RU2313824C2 (ru) | Информационная система клиент - сервер и способ предоставления графического пользовательского интерфейса | |
US20030081788A1 (en) | Secure printing to a web-based imaging print service | |
CN112199622A (zh) | 页面跳转方法、***及存储介质 | |
US20050137937A1 (en) | Method and apparatus for web-based label printing | |
WO2007001206A1 (fr) | Systeme d'information client-serveur et procede permettant d'obtenir une interface graphique | |
US8005920B2 (en) | Method and apparatus for transmitting arbitrarily large amounts of data over the internet | |
CN116954530B (zh) | 一种打印机数据处理方法以及服务器 | |
CN105159963A (zh) | 电子文件生成方法及装置 | |
CN113377309A (zh) | 一种可变二维码图像实时打印方法、装置、设备及介质 | |
JP2007196386A (ja) | 画像形成装置 | |
CN104219207B (zh) | 一种安全协商装置和方法 | |
JP4159869B2 (ja) | 情報提供装置、情報提供方法、情報提供システム、及び情報提供プログラム | |
KR20100061583A (ko) | 이미지 렌더링 시스템 및 그 방법 | |
WO2010051508A1 (en) | Storing and referencing partial complex resources using object identifiers in a printing system | |
JP2006146932A (ja) | 画像サーバおよびその動作制御方法 | |
CN111124323A (zh) | 一种基于Applet方式调用客户端打印机接口的实现方法 |
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 |