CN102789372B - 一种打印方法及装置 - Google Patents
一种打印方法及装置 Download PDFInfo
- Publication number
- CN102789372B CN102789372B CN201110125357.9A CN201110125357A CN102789372B CN 102789372 B CN102789372 B CN 102789372B CN 201110125357 A CN201110125357 A CN 201110125357A CN 102789372 B CN102789372 B CN 102789372B
- Authority
- CN
- China
- Prior art keywords
- type element
- configuration information
- order
- band
- 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
Landscapes
- Record Information Processing For Printing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
本发明公开了一种打印方法及装置,属于计算机领域。所述方法包括:当用户修改完打印模板时,根据所述打印模板中发生变化的打印元素更新所述打印模板的扩展标记语言XML配置文件,所述XML配置文件用于存储所述打印模板中各打印元素的配置信息;当所述用户选择需要打印的订单后,接收所述用户提交的打印请求消息,将所述订单包括的每项打印内容分别与所述XML配置文件中对应的打印元素结合得到所述订单的待布局的打印元素;根据所述待布局的打印元素获取所述订单的打印任务并对所述订单的打印任务进行调度打印。所述装置包括:更新模块、结合模块、获取模块和打印模块。本发明能够使用户根据需要修改打印模板并提高用户体验。
Description
技术领域
本发明涉及计算机领域,特别涉及一种打印方法及装置。
背景技术
目前像淘宝这类提供网络零售服务的网站得到了快速地发展,这类网站每天都会产生大量的订单。用户可以选择订单,并利用打印快递单的软件将选择的订单打印成快递单。
其中,技术人员在开发该软件时,事先开发一个打印模板;另外,每个订单中的每个打印内容都对应该打印模板内的一个打印元素;当用户利用该软件将订单打印成快递单时,该软件将该订单中的每个打印内容分别与每个打印内容对应的打印元素进行结合,得到该订单对应的待布局的打印元素,根据该订单对应的待布局的打印元素将该订单打印成快递单。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
技术人员开发出打印模板后,用户不可以在该打印模板中添加、删除或修改打印元素,使得用户无法根据自身的需要去修改打印模板,降低用户体验。
发明内容
为了能够使用户根据需要修改打印模板并提高用户体验,本发明提供了一种打印方法及装置。所述技术方案如下:
一种打印方法,所述方法包括:
当用户修改完打印模板时,根据所述打印模板中发生变化的打印元素更新所述打印模板的XML(ExtensibleMarkupLanguage,可扩展标记语言)配置文件,所述XML配置文件用于存储所述打印模板中各打印元素的配置信息;
当所述用户选择需要打印的订单后,接收所述用户提交的打印请求消息,将所述订单包括的每项打印内容分别与所述XML配置文件中对应的打印元素结合得到所述订单的待布局的打印元素;
根据所述待布局的打印元素获取所述订单的打印任务并对所述订单的打印任务进行调度打印。
所述XML配置文件以树的形式存储所述打印模板中的打印元素的配置信息,以及所述配置信息至少包括打印元素的标识、位置区域和打印内容;
相应地,根据所述打印模板中发生变化的打印元素更新所述打印模板的扩展标记语言XML配置文件,包括:
如果所述发生变化的打印元素为用户添加到所述打印模板的新打印元素,则获取所述新打印元素的配置信息以及所属的元素组,从所述XML配置文件中的树的根节点开始遍历,直到遍历到所述元素组对应的节点,将所述新打印元素的配置信息作为所述元素组对应的节点的子节点并添加到所述树中;
如果所述发生变化的打印元素为用户修改所述打印模板中已存在的打印元素,则获取所述修改的打印元素的配置信息,从所述根节点开始遍历直到遍历到所述修改的打印元素对应的节点,将所述遍历的节点中的配置信息更新为所述修改的打印元素的配置信息;
如果所述发生变化的打印元素为用户从所述打印模板中删除的打印元素,则从所述根节点开始遍历,直到遍历到所述删除的打印元素对应的节点,删除所述删除的打印元素对应的节点。
所述将所述订单包括的每项打印内容分别与所述XML配置文件中对应的打印元素结合得到所述订单的待布局的打印元素,包括:
获取用户选择的订单,读取所述订单中的每项打印内容的标识;
从所述XML配置文件中读取每个打印元素的配置信息,并缓存所述每个打印元素的配置信息;
根据所述每项打印内容的标识,从缓存所述每个打印元素的配置信息中查找出每项打印内容对应的打印元素的配置信息;
将所述每项打印内容分别与所述每项打印内容对应的打印元素的配置信息进行结合,将缓存的所述每个打印元素作为所述订单的待布局的打印元素。
将所述每项打印内容分别与所述每项打印内容对应的打印元素的配置信息进行结合,包括:
在缓存所述每个打印元素的配置信息中,将所述查找出的每个打印元素的配置信息中的打印内容替换为所述每个打印元素对应所述订单中的打印内容。
根据所述待布局的打印元素获取所述订单的打印任务,包括:
扫描所述待布局的打印元素中的每个打印元素的配置信息;
根据所述配置信息包括的位置区域,将所述配置信息包括的打印内容映射到已创建的打印页中,得到所述订单的打印页;
将所述订单的打印页与已创建的虚拟打印机进行构造得到所述订单的打印任务。
根据所述配置信息包括的位置区域,将所述配置信息包括的打印内容映射到已创建的打印页中,包括:
判断所述已创建的打印页中的空闲空间是否大于所述配置信息包括的位置区域的大小;
如果是,则根据所述配置信息包括的位置区域在所述已创建的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中;
如果否,则创建新的打印页,根据所述配置信息包括的位置区域在所述新的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中。
对所述订单的打印任务进行调度打印,包括:
设置所述订单的打印任务的优先级,根据所述优先级将所述订单的打印任务插入到打印任务列表中;
从所述打印线程列表中获取空闲的打印线程,从所述打印任务列表中取出打印任务,通过所述空闲的打印线程对所述取出的打印任务进行打印。
一种打印装置,所述方法包括:
更新模块,用于当用户修改完打印模板时,根据所述打印模板中发生变化的打印元素更新所述打印模板的XML配置文件,所述XML配置文件用于存储所述打印模板中各打印元素的配置信息;
结合模块,用于当所述用户选择需要打印的订单后,接收所述用户提交的打印请求消息,将所述订单包括的每项打印内容分别与所述XML配置文件中对应的打印元素结合得到所述订单的待布局的打印元素;
获取模块,用于根据所述待布局的打印元素获取所述订单的打印任务;
打印模块,用于对所述订单的打印任务进行调度打印。
所述XML配置文件以树的形式存储所述打印模板中的打印元素的配置信息,以及所述配置信息至少包括打印元素的标识、位置区域和打印内容;
相应地,所述更新模块包括:
添加单元,用于如果所述发生变化的打印元素为用户添加到所述打印模板的新打印元素,则获取所述新打印元素的配置信息以及所属的元素组,从所述XML配置文件中的树的根节点开始遍历,直到遍历到所述元素组对应的节点,将所述新打印元素的配置信息作为所述元素组对应的节点的子节点并添加到所述树中;
更新单元,用于如果所述发生变化的打印元素为用户修改所述打印模板中已存在的打印元素,则获取所述修改的打印元素的配置信息,从所述根节点开始遍历直到遍历到所述修改的打印元素对应的节点,将所述遍历的节点中的配置信息更新为所述修改的打印元素的配置信息;
删除单元,用于如果所述发生变化的打印元素为用户从所述打印模板中删除的打印元素,则从所述根节点开始遍历,直到遍历到所述删除的打印元素对应的节点,删除所述删除的打印元素对应的节点。
所述结合模块包括:
获取单元,用于获取用户选择的订单,读取所述订单中的每项打印内容的标识;
缓存单元,用于从所述XML配置文件中读取每个打印元素的配置信息,并缓存所述每个打印元素的配置信息;
查找单元,用于根据所述每项打印内容的标识,从缓存所述每个打印元素的配置信息中查找出每项打印内容对应的打印元素的配置信息;
结合单元,用于将所述每项打印内容分别与所述每项打印内容对应的打印元素的配置信息进行结合,将缓存的所述每个打印元素作为所述订单的待布局的打印元素。
所述结合单元,用于在缓存所述每个打印元素的配置信息中,将所述查找出的每个打印元素的配置信息中的打印内容替换为所述每个打印元素对应所述订单中的打印内容。
所述获取模块包括:
扫描单元,用于扫描所述待布局的打印元素中的每个打印元素的配置信息;
映射单元,用于根据所述配置信息包括的位置区域,将所述配置信息包括的打印内容映射到已创建的打印页中,得到所述订单的打印页;
构造单元,用于将所述订单的打印页与已创建的虚拟打印机进行构造得到所述订单的打印任务。
所述映射单元包括:
判断子单元,用于判断所述已创建的打印页中的空闲空间是否大于所述配置信息包括的位置区域的大小;
第一映射子单元,用于如果是,则根据所述配置信息包括的位置区域在所述已创建的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中;
第二映射子单元,用于如果否,则创建新的打印页,根据所述配置信息包括的位置区域在所述新的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中。
所述打印模块包括:
插入单元,用于设置所述订单的打印任务的优先级,根据所述优先级将所述订单的打印任务插入到打印任务列表中;
打印单元,用于从所述打印线程列表中获取空闲的打印线程,从所述打印任务列表中取出打印任务,通过所述空闲的打印线程对所述取出的打印任务进行打印。
在本发明中,当用户修改完打印模板时,根据用户修改的打印模板中发生变化的打印元素更新在XML配置文件中存储的打印元素的配置信息,当用户选择订单时将该订单中的每个打印内容与XML配置文件中对应的打印元素的配置信息结合得到待布局的打印元素,根据待布局的打印元素获取该订单的打印任务并对该打印任务进行调度打印。如此,使得用户可以根据自身的需要去修改打印模板,提高了用户体验。
附图说明
图1是本发明实施例1提供的一种打印方法流程图;
图2是本发明实施例2提供的一种打印方法流程图;
图3是本发明实施例2提供的一种打印模板示意图;
图4是本发明实施例2提供的XML配置文件的整体结构图;
图5是本发明实施例2提供的元素组根节点的结构原型图;
图6是本发明实施例2提供的字符串类打印元素text的结构原型图;
图7是本发明实施例3提供的一种打印装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
如图1所示,本发明实施例提供了一种打印方法,包括:
步骤101:当用户修改完打印模板时,根据打印模板中发生变化的打印元素更新打印模板的XML配置文件,该XML配置文件用于存储打印模板中各打印元素的配置信息;
步骤102:当用户选择需要打印的订单后,接收用户提交的打印请求消息,将该订单包括的每项打印内容分别与XML配置文件中对应的打印元素结合得到该订单的待布局的打印元素;
步骤103:根据待布局的打印元素获取该订单的打印任务并对该订单的打印任务进行调度打印。
在本发明实施例中,当用户编辑完打印模板时,获取用户编辑的打印模板中的每个打印元素的配置信息,并将每个打印元素的配置信息存储在XML配置文件中,当用户选择订单时将该订单中的每个打印内容与XML配置文件中对应的打印元素的配置信息结合得到待布局的打印元素,根据待布局的打印元素获取得该订单的打印任务并对该打印任务进行调度打印。如此,使得用户可以根据自身的需要去修改打印模板,提高了用户体验。
实施例2
本发明实施例提供了一种打印方法。其中,用户先修改打印模板并选择订单,再利用本实施提供的打印方法将选择的订单打印成快递单。参见图2,该方法包括:
步骤201:当用户编辑完打印模板后,接收用户提交用于请求保存打印模板的保存请求消息;
其中,打印模板由一个或多个元素组组成,每个元素组由一个或多个打印元素组成,每个元素组都有自己的位置区域,且每个元素组的位置区域包括每个元素组包括的每个打印元素占用的位置区域之和,每个打印元素都有自身的配置信息,且每个打印元素的配置信息至少包括标识、打印内容和位置区域,其中,每个打印元素在打印模板中所占的位置区域为矩形,因此可以用位置区域的任一对对角点中的两个对角点的坐标表示一个位置区域;另外,每个打印元素的标识由技术人员进行分配且分配之后每个打印元素的标识固定不变。
其中,打印元素包括字符串类打印元素、线条类打印元素和图片类打印元素。字符串类打印元素的打印内容为字符串类打印元素的标题,且字符串类打印元素的配置信息至少包括打印元素的标识、标题和位置区域,还可以包括字体和/或大小等信息,字符串类打印元素包括说明类打印元素和填充类打印元素,说明类打印元素与填充类打印元素一一对应,说明类打印元素的标题用于解释填充类打印元素的含义,填充类打印元素的标题用于替换订单中的打印内容;线条类打印元素的打印内容为线条,且线条类打印元素的配置信息至少包括标识、线条和位置区域,还可以包括线条的宽度和/或颜色等信息,图片类打印元素的打印内容为图片,且图片类打印元素的配置信息至少包括标识、图片和位置区域,还可以包括图片的大小和画笔等信息。
例如,如图3所示的打印模板,该打印模板内包括两个元素组,分别为卖家元素组和买家元素组,卖家元素组包括的字符串类元素分别为“寄件人姓名”、“卖家姓名”、“电话”、“卖家电话”、“单位名称”、“卖家单位名称”、“地址”和“卖家地址”;其中,“寄件人姓名”、“电话”、“单位名称”和“地址”都为说明类打印元素,且“寄件人姓名”、“电话”、“单位名称”和“地址”的标识分别为ID11、ID12、ID13和ID14;“卖家姓名”、“卖家电话”、“卖家单位名称”和“卖家地址”都为填充类打印元素,且“卖家姓名”、“卖家电话”、“卖家单位名称”和“卖家地址”的标识分别为ID21、ID22、ID23和ID24;“寄件人姓名”与“卖家姓名”一一对应,“电话”与“卖家电话”一一对应、“单位名称”与“卖家单位名称”一一对应以及“地址”与“卖家地址”一一对应,其中,说明类打印元素“寄件人姓名”用于解释其对应的填充类打印元素“卖家姓名”的含义,填充类打印元素“卖家姓名”的标题用于替换订单中的卖家姓名。
买家元素组包括的打印元素分别为“收件人姓名”、“买家姓名”、“电话”、“买家电话”、“单位名称”、“买家单位名称”、“地址”和“买家地址”。其中,“收件人姓名”、“电话”、“单位名称”和“地址”都为说明类打印元素,且“收件人姓名”、“电话”、“单位名称”和“地址”的标识分别为ID31、ID32、ID33和ID34;“买家姓名”、“买家电话”、“买家单位名称”和“买家地址”都为填充类打印元素,且“买家姓名”、“买家电话”、“买家单位名称”和“买家地址”的标识分别为ID41、ID42、ID43和ID44;“收件人姓名”与“买家姓名”一一对应、“电话”与“买家电话”一一对应、“单位名称”与“买家单位名称”一一对应以及“地址”与“买家地址”一一对应。
其中,在本实施例中,技术人员事先设置一个打印模板,该打印模板包括一个或多个元素组且该打印模板中的每个元素组可以为空;另外,技术人员还为每个元素组设置好各种打印元素。
其中,用户可以根据需要修改技术人员设置好的打印模板,具体为:用户可以根据需要从技术人员设置好的打印元素中,为该打印模板中的每个元素组选择打印元素,将每个元素组的打印元素分别添加到每个元素组中。对于已经修改好的打印模板,用户还可以根据需要随时对打印模板进行修改,例如,可以向打印模板中元素组中添加新打印元素、修改打印模板中已存在的打印元素的位置区域和/或大小等配置信息或者删除打印模板中已存在的打印元素。
其中,用户向打印模板中添加新打印元素时,用户还可以设置新打印元素的配置信息,具体为,如果新的打印元素为字符串类打印元素,则用户可以设置新的打印元素的标题,还可以设置新的打印元素的字体、字体颜色和/或字体大小等配置信息;如果新的打印元素为线条类打印元素,则用户可以设置新的打印元素的线条宽宽和/或颜色等配置信息;如果新的打印元素为图片,则用户可以设置新的打印元素的图片大小和/或画笔等配置信息。
其中,用户在编辑打印模板时,会在屏幕中显示编辑的模板,屏幕自身有一个屏幕坐标系且屏幕坐标系以像素为单位,所以表示每个打印元素所占位置区域的坐标都为屏幕坐标系中的坐标。另外,用户修改完打印模板后,用户可以提交用于请求保存打印模板的保存请求消息。
步骤202:获取该打印模板中发生变化的打印元素,根据发生变化的打印元素更新XML配置文件,该XML配置文件中存储该打印模板中的每个打印元素的配置信息;
其中,在本实施例中,XML配置文件可以采用树的形式来存储打印模板中的每个打印元素的配置信息,且每个打印元素的配置信息存储在XML配置文件中的树的叶子节点中。如图4所示的XML配置文件的整体结构,XML配置文件采用的数据结构为树,树的根节点template包括四个属性值分别为x轴偏移量xoffset、y轴偏移量yoffset、宽度width和高度height,根节点temlpate下有字体父节点fonts、画笔父节点pens、元素组父节点groups和背景父节点backgroud等节点。
如图5所示的元素组父节点groups的结构原型图。其中,元素组父节点groups下由一个或多个元素组节点group组成,在元素组节点group下面可以包含多个打印元素,元素组节点group下的子节点都为元素组包括的打印元素,例如,一个元素组节点group可以包括字符串类打印元素text、线条类打印元素line、图片类打印元素barcode,元素组节点group可以嵌套元素组节点group,另外,元素组节点group还存在元素组的属性值可以包括标识Id、绝对值absolute和可见值visible等,以及元素组节点group还存储元素组占用的位置区域rect。其中,位置区域rect能包含元素组内的所有成员所占的位置区域之和。
如图6所示的字符串类打印元素text节点的结构原型图。在字符串类打印元素text节点内存储包括标识ID、标题title、字体标识fontid、自动缩放singleline、高度lheight、对齐方式align、可见值visible、位置区域rect、字体颜色txtcolor和背景颜色bkcolor等配置信息。
具体地,如果发生变化的打印元素为用户添加到打印模板中的新打印元素,则获取新打印元素的配置信息以及新打印元素所属的元素组,从XML配置文件中的树的根节点开始遍历,直到遍历到新打印元素所属的元素组对应的节点,将新打印元素的配置信息作为遍历的节点的子节点并添加到树中;如果发生变化的打印元素为用户修改打印模板中的打印元素,则获取修改的打印元素的配置信息,从XML配置文件中的树的根节点开始遍历,直到遍历到修改的打印元素对应的节点,将遍历的节点中存储的配置信息更新为获取的配置信息;如果发生变化的打印元素为用户从打印模板中删除的打印元素,则从XML配置文件中的树的根节点开始遍历,直到遍历到删除的打印元素对应的节点,删除遍历的节点。
其中,如果发生变化的打印元素为字符串类打印元素,则从发生变化的字符串类打印元素中读取字符串类打印元素的标识、标题以及根据字符串类打印元素在打印模板中占用的位置区域获取表示占用的位置区域的坐标等配置信息;
如果发生变化的打印元素为线条类打印元素,则从线条类打印元素中读取打印元素的标识、线条以及根据线条类打印元素在打印模板中占用的位置区域获取表示占用的位置区域的坐标等信息;
如果发生变化的打印元素为图片类打印元素,则读取打印元素的标识、图片以及根据图片类打印元素在打印模板中占用的位置区域获取表示占用的位置区域的坐标等信息。
其中,打印模板采用屏幕坐标系,而在XML配置文件中可以采用逻辑坐标系来存储表示打印元素的位置区域的坐标。
相应地,根据字符串类打印元素在打印模板中占用的位置区域获取表示位置区域的坐标的操作可以具体为:根据字符串类打印元素在打印模板中占用的位置区域,读取表示字符串类打印元素所占位置区域在屏幕坐标系中的坐标,按如下的公式(1)将表示位置区域在屏幕坐标系中的坐标转换为在逻辑坐标系中的坐标。
其中,Pm为屏幕显示器的像素,Lm为屏幕显示器的尺寸,Pi为表示打印元素所占位置区域在屏幕坐标系中的坐标,Li为表示打印元素所占位置区域在逻辑坐标系中的坐标。
根据线条类打印元素在打印模板中占用的位置区域获取表位置区域的坐标的操作可以具体为:根据线条类打印元素在打印模板中占用的位置区域,读取表示线条类打印元素所占位置区域在屏幕坐标系中的坐标,按公式(1)将表示位置区域在屏幕坐标系中的坐标转换为在逻辑坐标系中的坐标。
以及,根据图片类打印元素在打印模板中占用的位置区域获取表示位置区域的坐标的操作可以具体为:根据图片类打印元素在打印模板中占用的位置区域,读取表示图片类打印元素所占位置区域在屏幕坐标系中的坐标,按公式(1)将表示位置区域在屏幕坐标系中的坐标转换为在逻辑坐标系中的坐标。
其中,当用户需要打印快递单时,用户选择一个订单,然后提交打印请求消息。订单包括一个或多个打印内容,且每个打印内容对应打印模板内的一个打印元素,且订单中的每个打印内容都包括每个打印内容对应的打印元素的标识。例如,某个订单包括的打印内容分别包括卖家姓名为“Name1”且其对应的打印元素的标识为ID21,卖家电话为“Telephone1”且其对应的打印元素的标识为ID22,卖家单位名称为“Company1”且其对应的打印元素的标识为ID23,卖家地址为“Address1”且其对应的打印元素的标识为ID24、买家姓名为“Name2”且其对应的打印元素的标识为ID41,买家电话为“Telephone2”且其对应的填充类打印元素的标识为ID42、买家单位名称为“Company2”且其对应的填充类打印元素的标识为ID43以及买家地址为“Address2”且其对应的填充类打印元素的标识为ID44。
步骤203:当用户选择订单后,接收用户提交的打印请求消息;
步骤204:获取用户选择的订单,将获取的订单中的每个打印内容与XML配置文件中其对应的打印元素的配置信息进行结合得到该订单对应的待布局的打印元素;
具体地,获取用户选择的订单,读取该订单中的每项打印内容对应打印元素的标识;从XML配置文件中读取每个打印元素的配置信息,并将每个打印元素的配置信息缓存在内存中,根据该订单中的每项打印内容对应打印元素的标识,内存中缓存的每个打印元素的配置信息中查找出每项打印内容对应的打印元素的配置信息;在内存中缓存的每个打印元素的配置信息中,将每项打印内容分别与每项打印内容对应的打印元素的配置信息进行结合,结合后将内存中缓存的每个的打印元素作为该订单的待布局的打印元素。
其中,在XML配置文件中将每项打印内容分别与每项打印内容对应的打印元素的配置信息进行结合的步骤可以具体为:在XML配置文件中将查找出的每个打印元素的配置信息中的打印内容替换为每个打印元素对应订单中的打印内容。
其中,订单中的每项打印内容对应的打印元素为填充类打印元素;因此,在XML配置文件中将查找出的每项打印元素的配置信息中的标题替换为每项打印元素对应的打印内容。
例如,对于订单中的卖家姓名为“Name1”,根据卖家姓名“Name1”对应的打印元素的标识为ID21,从XML配置文件中查找出对应的打印元素为“卖家姓名”,在XML配置文件中将打印元素“卖家姓名”的标题“卖家姓名”替换为该项打印内容“Name1”;对订单中的其他每项打印内容,也按上述相同的方法与XML配置文件中对应的填充类打印元素的配置信息进行结合,得到的结果为如表1所示。
表1
步骤205:从该订单对应的待布局的打印元素中读取每个打印元素的配置信息,根据每个打印元素的配置信息将每个打印元素放置在打印页中得到该订单对应的打印页;
具体地,创建一个打印页,扫描该订单对应的待布局的打印元素中的每个打印元素的配置信息;根据扫描的打印元素的配置信息包括的位置区域,在创建的打印页中映射出对应的位置区域并将扫描的打印元素的配置信息包括的打印内容放置在映射的位置区域中。
其中,在每次根据配置信息中的位置区域将该配置信息中的打印内容放置到创建的打印页时:先判断创建的打印页中的空闲空间是否大于该配置信息包括的位置区域的大小;如果是,则根据该配置信息中的位置区域在创建的打印页中映射出相同的位置区域,将该配置信息包括的打印内容放置在映射的位置区域中;如果否,则创建新的打印页,根据该配置信息中的位置区域在新的打印页中映射出相同的位置区域,将配置信息包括的打印内容放置在映射的位置区域中。
其中,如果扫描的打印元素为字符串类打印元素,则该字符串类打印元素的配置信息包括打印元素的标题和占用的位置区域等信息,当创建的打印页的剩余空间满足该字符串类打印元素所占的位置区域,则根据表示位置区域的坐标,并通过自动布局算法在打印页中映射出对应的位置区域,将该字符串类打印元素的标题放置在映射的位置区域中;当已创建的打印页的剩余空间不满足字符串类打印元素所占的位置区域,创建新的打印页,根据表示位置区域的坐标在新的打印页中映射出对应的位置区域,将该字符串类打印元素的标题放置在打印页中映射的位置区域中;如果该字符串类打印元素的配置信息还包括字体和字体大小等其他信息,则还可以根据字体和字体大小等其他信息设置位置区域中的标题;
如果扫描的打印元素为线条类打印元素,则该线条类打印元素的配置信息包括打印元素的线条和表示位置区域的坐标等信息,当已创建的打印页的剩余空间满足该线条类打印元素所占的位置区域,根据表示位置区域的坐标在已创建的打印页中映射出对应的位置区域,将该线条类打印元素的线条放置在映射的位置区域中;当已创建的打印页的剩余空间不满足该线条类打印元素所占的位置区域,创建新的打印页,根据表示位置区域的坐标在新的打印页中映射出对应的位置区域,将该线条类打印元素的线条放置在新的打印页中映射的位置区域中;如果该线条类打印元素的配置信息还包括线条宽度和/或颜色等其他信息,则还可以根据线条宽度和/或颜色等其他信息设置位置区域中的线条;
如果扫描的打印元素为图片类打印元素,则该图片类打印元素的配置信息包括打印元素的图片和表示位置区域的坐标等信息,当已创建的打印页的剩余空间满足该图片类打印元素所占的位置区域,根据表示位置区域的坐标在已创建的打印页中映射出对应的位置区域,将该图片类打印元素的图片放置在映射的位置区域中;当已创建的打印页的剩余空间不满足该图片类打印元素所占的位置区域,创建新的打印页,根据表示位置区域的坐标在新的打印页中映射出对应的位置区域,将该图片类打印元素的图片放置在新的打印页中映射的位置区域中中如果配置信息还包括图片大小等其他信息,则还可以根据图片大小等其他信息设置位置区域中的图片。
步骤206:创建虚拟打印机,将该订单对应的打印页与创建的虚拟打印机构造打印任务,并设置构造的打印任务的优先级;
步骤207:将打印任务放置到打印任务列表,通对打印任务列表中的每个订单的打印任务进行调度打印。
具体地,将该订单的打印页与创建的虚拟打印机进行构造出该订单的打印任务;设置该订单的打印任务的优先级,根据优先级将该订单的打印任务插入到打印任务列表中;从打印线程列表中获取空闲的打印线程,从打印任务列表中取出打印任务,通过空闲的打印线程对取出的打印任务进行打印。
其中,打印线程列表用于存储空闲的打印线程,且打印线程的个数只有预设的数值个,当打印线程完成打印任务时,则自动加入到打印线程中等调度。
其中,当对打印任务进行调度打印时,根据优先级从打印任务列表中取出一个打印任务,如果打印线程列表中有空闲的打印线程,则从打印线程列表中取出一个空闲的线程,并将取出的打印任务分配给该空闲的线程,由该空闲的线程完成取出的打印任务;如果打印线程列表中没有空闲的打印线程,则等待打印线程列表中有空闲的线程时,取出空闲的线程并将取出的打印任务分配给该空闲的线程,由该空闲的线程完成取出的打印任务。
其中,采用多个打印线程对不同的订单的打印任务进行打印,可以避免单个打印线程进行打印时,当打印机繁忙或者打印机和电脑主机连接的网络条件不好时,使得单个的打印线程卡死的现象发生。
在本发明实施例中,当用户编辑完打印模板时,获取用户编辑的打印模板中的每个打印元素的配置信息,并将每个打印元素的配置信息存储在XML配置文件中,当用户选择订单时将该订单中的每个打印内容与XML配置文件中对应的打印元素的配置信息结合得到待布局的打印元素,根据待布局的打印元素获取得该订单的打印任务并对该打印任务进行调度打印。如此,使得用户可以根据自身的需要去修改打印模板,提高了用户体验。
实施例3
如图7所示,本发明实施例提供了一种打印装置,包括:
更新模块301,用于当用户修改完打印模板时,根据该打印模板中发生变化的打印元素更新该打印模板的XML配置文件,该XML配置文件用于存储该打印模板中各打印元素的配置信息;
结合模块302,用于当用户选择需要打印的订单后,接收用户提交的打印请求消息,将该订单包括的每项打印内容分别与XML配置文件中对应的打印元素结合得到该订单的待布局的打印元素;
获取模块303,用于根据待布局的打印元素获取该订单的打印任务;
打印模块304,用于对该订单的打印任务进行调度打印。
其中,该XML配置文件以树的形式存储打印模板中的打印元素的配置信息,以及配置信息至少包括打印元素的标识、位置区域和打印内容;
相应地,更新模块301包括:
添加单元,用于如果发生变化的打印元素为用户添加到打印模板的新打印元素,则获取新打印元素的配置信息以及所属的元素组,从XML配置文件中的树的根节点开始遍历,直到遍历到该元素组对应的节点,将新打印元素的配置信息作为该元素组对应的节点的子节点并添加到树中;
更新单元,用于如果发生变化的打印元素为用户修改打印模板中已存在的打印元素,则获取修改的打印元素的配置信息,从根节点开始遍历直到遍历到修改的打印元素对应的节点,将遍历的节点中的配置信息更新为修改的打印元素的配置信息;
删除单元,用于如果发生变化的打印元素为用户从打印模板中删除的打印元素,则从根节点开始遍历,直到遍历到删除的打印元素对应的节点,删除删除的打印元素对应的节点。
其中,结合模块302包括:
获取单元,用于获取用户选择的订单,读取该订单中的每项打印内容的标识;
缓存单元,用于从XML配置文件中读取每个打印元素的配置信息,并缓存每个打印元素的配置信息;
查找单元,用于根据该订单中的每项打印内容的标识,从缓存每个打印元素的配置信息中查找出该订单中的每项打印内容对应的打印元素的配置信息;
结合单元,用于将该订单中的每项打印内容分别与该订单中的每项打印内容对应的打印元素的配置信息进行结合,将缓存的每个打印元素作为该订单的待布局的打印元素。
其中,结合单元,用于在缓存每个打印元素的配置信息中,将查找出的每个打印元素的配置信息中的打印内容替换为每个打印元素对应该订单中的打印内容。
其中,获取模块303包括:
扫描单元,用于扫描待布局的打印元素中的每个打印元素的配置信息;
映射单元,用于根据该配置信息包括的位置区域,将该配置信息包括的打印内容映射到已创建的打印页中,得到该订单的打印页;
构造单元,用于将该订单的打印页与已创建的虚拟打印机进行构造得到该订单的打印任务。
其中,映射单元包括:
判断子单元,用于判断已创建的打印页中的空闲空间是否大于该配置信息包括的位置区域的大小;
第一映射子单元,用于如果是,则根据该配置信息包括的位置区域在已创建的打印页中映射出相同的位置区域,将该配置信息包括的打印内容放置在映射的位置区域中;
第二映射子单元,用于如果否,则创建新的打印页,根据该配置信息包括的位置区域在新的打印页中映射出相同的位置区域,将该配置信息包括的打印内容放置在映射的位置区域中。
其中,打印模块304包括:
插入单元,用于设置该订单的打印任务的优先级,根据优先级将该订单的打印任务插入到打印任务列表中;
打印单元,用于从打印线程列表中获取空闲的打印线程,从打印任务列表中取出打印任务,通过空闲的打印线程对取出的打印任务进行打印。
在本发明实施例中,当用户编辑完打印模板时,获取用户编辑的打印模板中的每个打印元素的配置信息,并将每个打印元素的配置信息存储在XML配置文件中,当用户选择订单时将该订单中的每个打印内容与XML配置文件中对应的打印元素的配置信息结合得到待布局的打印元素,根据待布局的打印元素获取得该订单的打印任务并对该打印任务进行调度打印。如此,使得用户可以根据自身的需要去修改打印模板,提高了用户体验。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种打印方法,其特征在于,所述方法包括:
当用户修改完打印模板时,根据所述打印模板中发生变化的打印元素更新所述打印模板的扩展标记语言XML配置文件,所述XML配置文件用于存储所述打印模板中各打印元素的配置信息;
当所述用户选择需要打印的订单后,接收所述用户提交的打印请求消息,将所述订单包括的每项打印内容分别与所述XML配置文件中对应的打印元素结合得到所述订单的待布局的打印元素;
根据所述待布局的打印元素获取所述订单的打印任务并对所述订单的打印任务进行调度打印;
所述XML配置文件以树的形式存储所述打印模板中的打印元素的配置信息,以及所述配置信息至少包括打印元素的标识、位置区域和打印内容;
相应地,根据所述打印模板中发生变化的打印元素更新所述打印模板的扩展标记语言XML配置文件,包括:
如果所述发生变化的打印元素为用户添加到所述打印模板的新打印元素,则获取所述新打印元素的配置信息以及所属的元素组,从所述XML配置文件中的树的根节点开始遍历,直到遍历到所述元素组对应的节点,将所述新打印元素的配置信息作为所述元素组对应的节点的子节点并添加到所述树中;
如果所述发生变化的打印元素为用户修改所述打印模板中已存在的打印元素,则获取所述修改的打印元素的配置信息,从所述根节点开始遍历直到遍历到所述修改的打印元素对应的节点,将所述遍历的节点中的配置信息更新为所述修改的打印元素的配置信息;
如果所述发生变化的打印元素为用户从所述打印模板中删除的打印元素,则从所述根节点开始遍历,直到遍历到所述删除的打印元素对应的节点,删除所述删除的打印元素对应的节点。
2.如权利要求1所述的方法,其特征在于,所述将所述订单包括的每项打印内容分别与所述XML配置文件中对应的打印元素结合得到所述订单的待布局的打印元素,包括:
获取用户选择的订单,读取所述订单中的每项打印内容的标识;
从所述XML配置文件中读取每个打印元素的配置信息,并缓存所述每个打印元素的配置信息;
根据所述每项打印内容的标识,从缓存所述每个打印元素的配置信息中查找出每项打印内容对应的打印元素的配置信息;
将所述每项打印内容分别与所述每项打印内容对应的打印元素的配置信息进行结合,将缓存的所述每个打印元素作为所述订单的待布局的打印元素。
3.如权利要求2所述的方法,其特征在于,将所述每项打印内容分别与所述每项打印内容对应的打印元素的配置信息进行结合,包括:
在缓存所述每个打印元素的配置信息中,将所述查找出的每个打印元素的配置信息中的打印内容替换为所述每个打印元素对应所述订单中的打印内容。
4.如权利要求1所述的方法,其特征在于,根据所述待布局的打印元素获取所述订单的打印任务,包括:
扫描所述待布局的打印元素中的每个打印元素的配置信息;
根据所述配置信息包括的位置区域,将所述配置信息包括的打印内容映射到已创建的打印页中,得到所述订单的打印页;
将所述订单的打印页与已创建的虚拟打印机进行构造得到所述订单的打印任务。
5.如果权利要求4所述的方法,其特征在于,根据所述配置信息包括的位置区域,将所述配置信息包括的打印内容映射到已创建的打印页中,包括:
判断所述已创建的打印页中的空闲空间是否大于所述配置信息包括的位置区域的大小;
如果是,则根据所述配置信息包括的位置区域在所述已创建的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中;
如果否,则创建新的打印页,根据所述配置信息包括的位置区域在所述新的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中。
6.如权利要求1所述的方法,其特征在于,对所述订单的打印任务进行调度打印,包括:
设置所述订单的打印任务的优先级,根据所述优先级将所述订单的打印任务插入到打印任务列表中;
从所述打印线程列表中获取空闲的打印线程,从所述打印任务列表中取出打印任务,通过所述空闲的打印线程对所述取出的打印任务进行打印。
7.一种打印装置,其特征在于,所述装置包括:
更新模块,用于当用户修改完打印模板时,根据所述打印模板中发生变化的打印元素更新所述打印模板的扩展标记语言XML配置文件,所述XML配置文件用于存储所述打印模板中各打印元素的配置信息;
结合模块,用于当所述用户选择需要打印的订单后,接收所述用户提交的打印请求消息,将所述订单包括的每项打印内容分别与所述XML配置文件中对应的打印元素结合得到所述订单的待布局的打印元素;
获取模块,用于根据所述待布局的打印元素获取所述订单的打印任务;
打印模块,用于对所述订单的打印任务进行调度打印;
所述XML配置文件以树的形式存储所述打印模板中的打印元素的配置信息,以及所述配置信息至少包括打印元素的标识、位置区域和打印内容;
相应地,所述更新模块包括:
添加单元,用于如果所述发生变化的打印元素为用户添加到所述打印模板的新打印元素,则获取所述新打印元素的配置信息以及所属的元素组,从所述XML配置文件中的树的根节点开始遍历,直到遍历到所述元素组对应的节点,将所述新打印元素的配置信息作为所述元素组对应的节点的子节点并添加到所述树中;
更新单元,用于如果所述发生变化的打印元素为用户修改所述打印模板中已存在的打印元素,则获取所述修改的打印元素的配置信息,从所述根节点开始遍历直到遍历到所述修改的打印元素对应的节点,将所述遍历的节点中的配置信息更新为所述修改的打印元素的配置信息;
删除单元,用于如果所述发生变化的打印元素为用户从所述打印模板中删除的打印元素,则从所述根节点开始遍历,直到遍历到所述删除的打印元素对应的节点,删除所述删除的打印元素对应的节点。
8.如权利要求7所述的装置,其特征在于,所述结合模块包括:
获取单元,用于获取用户选择的订单,读取所述订单中的每项打印内容的标识;
缓存单元,用于从所述XML配置文件中读取每个打印元素的配置信息,并缓存所述每个打印元素的配置信息;
查找单元,用于根据所述每项打印内容的标识,从缓存所述每个打印元素的配置信息中查找出每项打印内容对应的打印元素的配置信息;
结合单元,用于将所述每项打印内容分别与所述每项打印内容对应的打印元素的配置信息进行结合,将缓存的所述每个打印元素作为所述订单的待布局的打印元素。
9.如权利要求8所述的装置,其特征在于,
所述结合单元,用于在缓存所述每个打印元素的配置信息中,将所述查找出的每个打印元素的配置信息中的打印内容替换为所述每个打印元素对应所述订单中的打印内容。
10.如权利要求7所述的装置,其特征在于,所述获取模块包括:
扫描单元,用于扫描所述待布局的打印元素中的每个打印元素的配置信息;
映射单元,用于根据所述配置信息包括的位置区域,将所述配置信息包括的打印内容映射到已创建的打印页中,得到所述订单的打印页;
构造单元,用于将所述订单的打印页与已创建的虚拟打印机进行构造得到所述订单的打印任务。
11.如权利要求10所述的装置,其特征在于,所述映射单元包括:
判断子单元,用于判断所述已创建的打印页中的空闲空间是否大于所述配置信息包括的位置区域的大小;
第一映射子单元,用于如果是,则根据所述配置信息包括的位置区域在所述已创建的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中;
第二映射子单元,用于如果否,则创建新的打印页,根据所述配置信息包括的位置区域在所述新的打印页中映射出相同的位置区域,将所述配置信息包括的打印内容放置在所述映射的位置区域中。
12.如权利要求7所述的装置,其特征在于,所述打印模块包括:
插入单元,用于设置所述订单的打印任务的优先级,根据所述优先级将所述订单的打印任务插入到打印任务列表中;
打印单元,用于从所述打印线程列表中获取空闲的打印线程,从所述打印任务列表中取出打印任务,通过所述空闲的打印线程对所述取出的打印任务进行打印。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110125357.9A CN102789372B (zh) | 2011-05-16 | 2011-05-16 | 一种打印方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110125357.9A CN102789372B (zh) | 2011-05-16 | 2011-05-16 | 一种打印方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102789372A CN102789372A (zh) | 2012-11-21 |
CN102789372B true CN102789372B (zh) | 2016-02-17 |
Family
ID=47154780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110125357.9A Active CN102789372B (zh) | 2011-05-16 | 2011-05-16 | 一种打印方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102789372B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838596A (zh) * | 2012-11-26 | 2014-06-04 | 中国银联股份有限公司 | 用于数据处理的格式文件生成系统、装置及方法 |
CN104111806B (zh) * | 2013-04-16 | 2017-07-21 | 北大方正集团有限公司 | 一种打印调度、处理方法、装置和系统 |
CN103617013B (zh) * | 2013-12-13 | 2017-02-01 | 天津书生软件技术有限公司 | 一种打印方法和装置 |
CN104598178B (zh) * | 2014-12-30 | 2018-08-10 | 福建星网视易信息系统有限公司 | 一种端口打印方法及装置 |
CN104899031B (zh) * | 2015-05-29 | 2018-01-09 | 北京京东尚科信息技术有限公司 | 物流数据生成方法和装置以及物流客户端配置方法和装置 |
CN105631738A (zh) * | 2015-12-30 | 2016-06-01 | 中国建设银行股份有限公司 | 一种会计凭证模板标准化录入与存储系统 |
CN107402729B (zh) * | 2016-05-20 | 2020-02-14 | 航天信息软件技术有限公司 | 打印模板构建方法及模板打印方法 |
CN106934958A (zh) * | 2017-03-10 | 2017-07-07 | 东软集团股份有限公司 | Pos机打印的设置方法及装置 |
CN108875853A (zh) * | 2017-05-10 | 2018-11-23 | 北大方正集团有限公司 | 数据标签打印的处理方法及装置 |
CN107766900B (zh) * | 2017-09-11 | 2021-05-28 | 深圳市共进电子股份有限公司 | 一种打印条码的方法、系统及计算设备 |
CN108170385A (zh) * | 2017-12-27 | 2018-06-15 | 浪潮金融信息技术有限公司 | 模板打印方法及系统、计算机可读存储介质、终端 |
CN108228119B (zh) * | 2018-01-11 | 2021-04-23 | 平安万家医疗投资管理有限责任公司 | 基于hxml的打印方法、终端设备及存储介质 |
CN109343803A (zh) * | 2018-09-19 | 2019-02-15 | 益萃网络科技(中国)有限公司 | 自定义打印方法、装置、计算机设备和存储介质 |
CN111045615A (zh) * | 2019-12-19 | 2020-04-21 | 厦门商集网络科技有限责任公司 | 一种在浏览器端自定义js模板的打印方法及系统 |
CN111338586A (zh) * | 2020-02-27 | 2020-06-26 | 拉扎斯网络科技(上海)有限公司 | 打印对象处理方法、装置、电子设备及可读存储介质 |
CN112416267A (zh) * | 2020-10-30 | 2021-02-26 | 山东浪潮通软信息科技有限公司 | 一种可配置的打印数据处理方法及装置 |
CN112346675A (zh) * | 2020-11-30 | 2021-02-09 | 恒瑞通(福建)信息技术有限公司 | 一种应用于食品配送单的打印方法及终端 |
CN112732205B (zh) * | 2020-12-18 | 2024-06-18 | 航天信息股份有限公司 | 通用的打印设备控制方法、电子设备、存储介质及系统 |
CN114356252B (zh) * | 2021-12-27 | 2024-03-19 | 金蝶软件(中国)有限公司 | 动态字段打印方法、系统及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984133A (zh) * | 2005-12-12 | 2007-06-20 | 腾讯科技(深圳)有限公司 | 一种形成结构树的方法 |
CN101477449A (zh) * | 2009-01-20 | 2009-07-08 | 北京展鹏电子技术有限公司 | 打印管理系统及打印管理方法 |
CN101593088A (zh) * | 2008-05-28 | 2009-12-02 | 鸿富锦精密工业(深圳)有限公司 | 集群式打印系统及方法 |
-
2011
- 2011-05-16 CN CN201110125357.9A patent/CN102789372B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984133A (zh) * | 2005-12-12 | 2007-06-20 | 腾讯科技(深圳)有限公司 | 一种形成结构树的方法 |
CN101593088A (zh) * | 2008-05-28 | 2009-12-02 | 鸿富锦精密工业(深圳)有限公司 | 集群式打印系统及方法 |
CN101477449A (zh) * | 2009-01-20 | 2009-07-08 | 北京展鹏电子技术有限公司 | 打印管理系统及打印管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102789372A (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102789372B (zh) | 一种打印方法及装置 | |
RU2419856C2 (ru) | Различные виды оформления с гармоничной версткой для динамически агрегированных документов | |
US20050278625A1 (en) | Dynamic document and template previews | |
CN104361139A (zh) | 数据导入装置和方法 | |
CN102096699B (zh) | 基于动态模板的展示方法及系统 | |
CN110705237B (zh) | 文档的自动生成方法、数据处理设备及存储介质 | |
CN103051652B (zh) | 一种移动终端云计算发布平台 | |
CN108090037B (zh) | 自动排版方法和装置 | |
CN110969004B (zh) | 图文自动排版方法及系统、服务器及介质 | |
CN109933311A (zh) | 一种信息系统创建方法及相关装置 | |
CN101739452A (zh) | 一种数据交换接口及其实现方法 | |
CN101527896B (zh) | 一种个人信息管理方法及装置 | |
CN110543303A (zh) | 一种可视化业务平台 | |
CN102789457A (zh) | 动态定制过滤条件的方法 | |
CN104657419A (zh) | 一种定制信纸模板的处理方法和系统 | |
CN109871210A (zh) | 网页元素修改方法、装置、设备及存储介质 | |
CN109213480A (zh) | 一种开发后台管理页面的方法、存储介质、设备及系统 | |
CN116401407A (zh) | 思维导图的节点属性配置方法、装置、设备和存储介质 | |
CN111861406A (zh) | 一种地图变更审核系统及方法 | |
CN107438194A (zh) | 一种智能电视ui对象绘制方法及智能电视 | |
CN115186643A (zh) | 签报模板的自定义配置方法、装置、设备和存储介质 | |
CN107943455A (zh) | 一种基于json数据格式的表单渲染系统 | |
CN114461209A (zh) | 页面配置与切换方法、装置、设备及存储介质 | |
CN111199138A (zh) | 使用QML对含Emoji表情弹幕描边方法、系统、服务器及存储介质 | |
CN102880893A (zh) | 一种条形码显示方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |