CN115098047A - 一种基于Word模板和功能插件的打印平台 - Google Patents

一种基于Word模板和功能插件的打印平台 Download PDF

Info

Publication number
CN115098047A
CN115098047A CN202210573315.XA CN202210573315A CN115098047A CN 115098047 A CN115098047 A CN 115098047A CN 202210573315 A CN202210573315 A CN 202210573315A CN 115098047 A CN115098047 A CN 115098047A
Authority
CN
China
Prior art keywords
data
attribute
field
word template
picture
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.)
Granted
Application number
CN202210573315.XA
Other languages
English (en)
Other versions
CN115098047B (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.)
Shanghai Newcool Information Technology Co ltd
Original Assignee
Shanghai Newcool Information Technology 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 Shanghai Newcool Information Technology Co ltd filed Critical Shanghai Newcool Information Technology Co ltd
Priority to CN202210573315.XA priority Critical patent/CN115098047B/zh
Publication of CN115098047A publication Critical patent/CN115098047A/zh
Application granted granted Critical
Publication of CN115098047B publication Critical patent/CN115098047B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1204Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1253Configuration of print job parameters, e.g. using UI at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/128Direct printing, e.g. sending document file, using memory stick, printing from a camera
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于Word模板和功能插件的打印平台,包括数据处理层、渲染层和插件层,所述插件层包括二维码插件、图片插件、行循环插件、小计插件和合计插件,基于Word文件特点,将打印数据分为表头字段和表体字段,在数据处理层中打印数据时,将表头字段定义为根DTO类的属性,表体字段定义为子DTO类下的属性,多个子DTO类下的属性对象组成一个Li st作为根DTO类的属性。本发明中,具有降低成本、提高效率、提高打印质量和用户体验等优点,开发者可以复用既有能力,同时可继承word中对字段和纸张样式的配置能力,减少代码开发时间,并通过提供配置的方式来快速实现需求,缩短开发和运维等时间,降低沟通和测试成本、服务器硬件成本和运营成本等。

Description

一种基于Word模板和功能插件的打印平台
技术领域
本发明涉及打印技术领域,尤其涉及一种基于Word模板和功能插件的打印平台。
背景技术
打印,通常指把电脑或其他电子设备中的文字或图片等可见数据,通过打印机等输出在纸张等记录物上,然而,现有的普通打印系统为企业特定场景提供固定的业务流程、交互页面和字段列表,打印场景固定,功能组合固定,固定打印模板使得系统业务场景单一,打印样式单一,开发模式偏于定制化,交互流程单一,不能依据用户特定的企业场景和应用需求快速响应和开发部,因此,本发明提供一种基于Word模板和功能插件的打印平台,支持对接到SaaS系统、低代码系统和第三方系统作为基础打印服务调用。
发明内容
为了解决上述背景技术中所提到的技术问题,而提出的一种基于Word模板和功能插件的打印平台。
为了实现上述目的,本发明采用了如下技术方案:
一种基于Word模板和功能插件的打印平台,包括数据处理层、渲染层和插件层,所述插件层包括二维码插件、图片插件、行循环插件、小计插件和合计插件;
基于Word文件特点,将打印数据分为表头字段和表体字段,在数据处理层中打印数据时,将表头字段定义为根DTO类的属性,即为一级属性,表体字段定义为子DTO类下的属性,即为二级属性,多个子DTO类下的属性对象组成一个List 作为根DTO类的属性,该List为字段数据拼接入参前的数据结构,该数据结构并用于打印平台对表格内的行列数据进行填充;
在渲染层对打印数据进行数据准备和数据填充,数据准备阶段包括以下几个步骤:
S1、获取Word模板的文件流和字段对照表信息,每个字段对应一个中文名称、属性code、类型,中文名称用于在Word模板中作为标签,打印平台获取中文名称后查询对应字段的属性code,获取数据;
S2、对多层级属性进行平铺操作,使它们统一转换为二级属性;
S3、解析Word模板文件,整理其中的特殊标签,特殊标签包括小计标签、行循环标签、二维码标签和图片标签,并在解析过程中记录相关标签渲染时需要的信息;
小计标签和行循环标签所在表格里的表头字段,用于识别渲染时,通过字段映射来获取根DTO类对象下对应的List属性,从而获取对应数据进行填充,并记录图片标签标明的图片尺寸,用于渲染时设定图片的尺寸;
S4、根据步骤S3整理的小计标签和行循环标签的结果,将表头字段填充进对应的根DTO类的List属性里,使得List属性下的每一个子DTO类的属性对象均获得此表头字段的数据;
S5、标签数据绑定:(1)对于表头文本标签,根据其字段对照表的属性code,将根DTO类下的对应属性值与标签文本信息进行数据绑定操作;(2)对于小计标签和行循环标签,在根DTO类中找到对应的List属性数据,连同字段对照表一起进行绑定;(3)对于图片标签和二维码标签,根据步骤S3中的图片尺寸,设置生成图片渲染对象,再将图片渲染对象与图片标签或者二维码标签进行绑定;
在数据填充阶段,通过Apache Poi框架的渲染方法对表头字段进行渲染,在对表体字段进行填充时,通过插件层对表体字段对相关的填充标识符进行解析识别和处理填充操作。
作为上述技术方案的进一步描述:
还包括客户端、业务端和后台服务端,所述后台服务端包括filestore文件服务平台、NOSP系统和Redis数据库;
所述客户端用于处理用户行为,处理后台服务端的接口请求、响应,并在请求发送成功后进行结果轮询,将生成的结果文件进行展示或下载;
所述业务端负责当前打印请求的服务初始化工作,通过雪花算法生成唯一流水id,并在Redis数据库生成本次调用的记录实体,用于后续打印状态和结果文件的存取工作,并通过与用户交互查询需要打印的单据数据,再将其传送给打印平台进行后续工作;
在后台服务端中,通过filestore文件服务平台实现Word模板文件的存取工作,通过NOSP系统管理字段对照表,通过Redis数据库记录当前打印服务请求的状态和结果。
作为上述技术方案的进一步描述:
通过二维码插件对Word模板中的二维码标签进行解析识别和处理填充,具体的,二维码标签在Word模板中用%作为识别,%后连接的内容分别是字段对照表里设置的中文名称a、下划线符号_和图片像素大小的宽度、高度值。
作为上述技术方案的进一步描述:
通过图片插件对Word模板中的图片标签进行解析识别和处理填充,具体的,图片标签在Word模板中用%作为识别,%后面连接的内容分别是字段对照表里设置的中文名称b、下划线符号_和图片像素大小的宽度、高度值,且图片标签可以放进表格内构建填充标识符,使得渲染的表格每行都有不同的图片内容。
作为上述技术方案的进一步描述:
通过行循环插件对Word模板中的行循环标签进行解析识别和处理填充,具体的,行循环标签在Word模板中固定为$row,且在进行行循环标签的渲染填充工作时,行循环插件根据字段对照表和List属性数据进行字段的识别和填充操作。
作为上述技术方案的进一步描述:
通过小计插件对Word模板中的小计标签进行解析识别和处理填充,具体的,小计标签在Word模板中固定为$merge作为识别,$merge后面连接的内容为下划线符号_和用来聚合的字段中文名称c,且在进行小计标签的渲染填充工作时,小计插件根据List属性数据内每个子DTO类对象的中文名称c属性的值进行分组;
在Word模板的额外配置行中,其表格文本内容为[$subtotal_中文名称d] 的形式,中文名称d用来标记被聚合的属性字段;
在对小计标签进行渲染填充时,小计插件会结合分组和被聚合的属性字段,给每组数据额外增加一行数据,即增加一个子DTO类对象,此行数据内会加和此组数据里所有中文名称d对应属性的值,最后和处理前的行数据一同被渲染出来。
作为上述技术方案的进一步描述:
通过合计插件对word模板中的合计填充标识符进行解析识别和处理填充,在word模板中配置在表格内,用$total作为识别,$total后面连接的内容为下划线符号_和用来合计的字段中文名称d,并作为word模板的额外配置行存在,在进行行循环标签或小计标签的渲染填充工作时,合计插件会额外对此行中匹配到的字段属性进行记录,并将此表格内所有的行数据下的此属性值进行累加,添加到表格的最末行。
作为上述技术方案的进一步描述:
在步骤S1中,在NOSP系统中配置字段对照表映射关系,映射关系里的中文名称是展示在Word模板中的标签或填充符内容,映射关系里的属性code是业务端定义的属性链路,多层级属性的不同层级间用.符号分隔。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明中,具有降低成本、提高效率、提高打印质量和用户体验等优点,首先,在降低成本方面,普通业务人员即可上手操作,为IT研发资源不足的企业减低人力成本,开发者可以复用既有能力,同时可继承word中对字段和纸张样式的配置能力,减少代码开发时间,并通过提供配置的方式来快速实现需求,缩短开发和运维等时间,降低沟通和测试成本、服务器硬件成本和运营成本等。在使用本打印平台进行打印需求开发时,对于整个开发团队,项目产品经理只需要提供打印模板和搭建字段对照表,后端工程师只需要对要打印的单据数据进行查询和传输工作,前端工程师只需要对单一打印页面和单一打印按钮进行开发即可。而在传统的打印服务开发过程中,为了明确所有字段的展示效果,前后端工程师需要对单据数据进行大量且繁琐的联调工作,如后端工程师需要调整传输数据的类型,前端工程师需要调整结果文件的页面展示效果。
2、本发明中,在提高效率方面,通过功能插件开发,如小计插件、行循环插件等,即可满足一批新增或变更需求,极大改善了客户需求响应效率,在配置无法满足的情况,可以复用平台能力,节省一部分开发工作量,平台能力复用缩短了端到端的交付时长,如测试时长、集成发布时长等。在传统的打印服务开发过程中,一旦前一次开发迭代结束交付,后期需要增加新的打印字段或调整打印结果文件的展示效果时,都需要牵动整个开发团队进行新一轮的迭代,项目产品经理需要明确改进需求,后端工程师需要对修改后的数据进行重新查询和整理,前端工程师需要对展示页面进行调整,这无疑是对整个团队开发资源的浪费。而在使用了本打印平台进行需求开发后,遇到相同的字段调整或展示效果修改问题时,只需要项目产品经理提供新的打印模板并根据字段调整情况维护字段对照表即可,既减少了不同职责人员之间的联调交互工作,也能从根本上减少前后端工程师的工作量。并且由于模板文件本身是可存储的,提供新的模板文件并不会覆盖旧的模板文件,亦可实现对历史迭代工作内容的保存。
3、本发明中,业务统一调用打印服务,在进行业务组装时,能大大降低系统bug率,提升交付质量,所见即所得的功能设计理念,降低用户交互理解成本,统一的配置流程,实现企业级打印功能和流程支撑。在引入了本打印平台后,不同的业务组公用一套后台打印服务,可以大大提升技术规范性,并便于相关文档、开发经验的维护。
4、本发明中,便捷的流程化配置和快速的功能拓展接口服务,面对功能需求时能够快速响应,并在人员的代码能力有限的情况下对功能快速部署。例如,若要引入新的标签类型或者新的表格处理方式,只需要在本打印平台内进行新功能的开发,即可实现所有业务组的支持,而不需要各业务进行独立组内开发工作,从根本上消除了重复性的开发工作。
附图说明
图1示出了根据本发明实施例提供的一种基于Word模板和功能插件的打印平台的打印流程示意图;
图2示出了根据本发明实施例提供的一种基于Word模板和功能插件的打印平台的业务端传输给打印平台的单据数据结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一
请参阅图1和图2,本发明提供一种技术方案:一种基于Word模板和功能插件的打印平台,包括数据处理层、渲染层和插件层,插件层包括二维码插件、图片插件、行循环插件、小计插件和合计插件;
基于Word文件特点,将打印数据分为表头字段和表体字段,在数据处理层中打印数据时,将表头字段定义为根DTO类的属性,即为一级属性,表体字段定义为子DTO类下的属性,即为二级属性,多个子DTO类下的属性对象组成一个List 作为根DTO类的属性,该List为字段数据拼接入参前的数据结构,该数据结构并用于打印平台对表格内的行列数据进行填充;
其中,表头字段亦称为通用字段,指通过普通文本插件或图片、二维码插件进行渲染,而不通过特殊表格插件渲染得到的字段,在Word模板中体现为不在表格内部且由双大括号{{}}定义的字段,而表体字段与之对应,指需要通过表格标签指明后进行渲染的字段,在Word模板中体现为在表格内部且由单中括号[] 定义的字段,简单概述可理解为表头字段是放在模板文件的表格外的,表体字段是放在模板文件的表格内的;
业务端在处理、整合要打印等单据数据时,需要将表头字段定义为根DTO类的属性,即为一级属性,而表体字段因为是一个表格中要进行渲染的字段,表格中会有多行数据,故表体字段定义为一个子DTO类下的属性,构成多层级属性,且多个子DTO类下的属性对象组成一个List作为根DTO类的属性;
如下述代码所见,OrderDemoDTO为单据根DTO类,其下属性orderNum和totalCount为一级属性,即为表头字段,Product类下的productName、price 属性为二级属性,即为表体字段,一个Product对象为模板表格中渲染后的一行数据,因为会有多行数据,故多个Product对象组成一个List<Products> products作为单据根DTO类的属性;
Figure BDA0003659804000000081
在渲染层对打印数据进行数据准备和数据填充,数据准备阶段包括以下几个步骤:
S1、在用户点击打印或下载按钮,调用相关接口时,接口的请求参数中会有word模板存在云端的链接和模板场景编号,可据此得到word模板的文件流和字段对照表信息,以进行后续的解析和预处理操作,在使用打印平台功能前,用户需在NOSP系统中配置好字段对照表映射关系,每个字段对应一个中文名称、属性code、类型,中文名称用于在Word模板中作为标签,打印平台获取中文名称后查询对应字段的属性code,获取数据,具体的,在NOSP系统中配置字段对照表映射关系,映射关系里的中文名称是展示在Word模板中的标签或填充符内容,映射关系里的属性code是业务端定义的属性链路,多层级属性的不同层级间用. 符号分隔;
S2、对多层级属性进行平铺操作,使它们统一转换为二级属性,普通的表体字段皆为二级属性,但存在一些表体字段,它们本身也是以多个键值对为一组的形式存在,则这些属性定义为三级属性,层级深度以此类推,如下代码所示, Product类下的productName和price属性为普通表体字段,即二级属性,但一个Product对象可能存在多个数量不确定的Spec属性,它们会以类似键值对 <code,value>的形式从业务端传来,这些键值对中的code属性即为三级属性;
Figure BDA0003659804000000091
Figure BDA0003659804000000101
在此步骤中,需要遍历所有类似products的List属性,将其下的所有三级属性和更深层级属性进行汇总以及平铺操作,将他们都转换为二级属性,从而进行后续数据填充阶段的取值;
S3、解析Word模板文件,整理其中的特殊标签,特殊标签包括小计标签、行循环标签、二维码标签和图片标签,并在解析过程中记录相关标签渲染时需要的信息;
小计标签和行循环标签所在表格里的表头字段,用于识别渲染时,通过NOSP 系统配置的字段映射来获取根DTO类对象下对应的List属性,从而获取对应数据进行填充,并记录图片标签标明的图片尺寸,用于渲染时设定图片的尺寸;
S4、根据步骤S3整理的小计标签和行循环标签的结果,将表头字段填充进对应的根DTO类的List属性里,使得List属性下的每一个子DTO类的属性对象均获得此表头字段的数据;
其中,如果用户的打印方式选择是单页打印方式,即代表多个单据下的List 属性,在往表格里填充时不会创建多个表格,而是只有唯一一个表格,这就需要将这些填充时用到的List属性下的对象全部取出来拼接成一个总的List,例如用户一次操作要打印10个单据,每个单据在渲染某表格时都有五条行数据,那么如选择了单页打印方式后,在步骤S4中将得到一个总量为50的List行数据,从而进行后续数据填充阶段的循环操作;
S5、标签数据绑定:(1)对于表头文本标签,根据其字段对照表的属性code,将根DTO类下的对应属性值与标签文本信息进行数据绑定操作;(2)对于小计标签和行循环标签,在根DTO类中找到对应的List属性数据,连同字段对照表一起进行绑定;(3)对于图片标签和二维码标签,根据步骤S3中的图片尺寸,设置生成图片渲染对象,再将图片渲染对象与图片标签或者二维码标签进行绑定;
在数据填充阶段,通过Apache Poi框架的渲染方法对表头字段进行渲染,在对表体字段进行填充时,通过插件层对表体字段对相关的填充标识符进行解析识别和处理填充操作;
具体的,(1)通过二维码插件对Word模板中的二维码标签进行解析识别和处理填充,具体的,二维码标签在Word模板中用%作为识别,%后连接的内容分别是字段对照表里设置的中文名称a、下划线符号_和图片像素大小的宽度、高度值;
(2)通过图片插件对Word模板中的图片标签进行解析识别和处理填充,具体的,图片标签在Word模板中用%作为识别,%后面连接的内容分别是字段对照表里设置的中文名称b、下划线符号_和图片像素大小的宽度、高度值,且图片标签可以放进表格内构建填充标识符,使得渲染的表格每行都有不同的图片内容;
(3)通过行循环插件对Word模板中的行循环标签进行解析识别和处理填充,具体的,行循环标签在Word模板中固定为$row,且在进行行循环标签的渲染填充工作时,行循环插件根据字段对照表和List属性数据进行字段的识别和填充操作;
(4)通过小计插件对Word模板中的小计标签进行解析识别和处理填充,具体的,小计标签在Word模板中固定为$merge作为识别,$merge后面连接的内容为下划线符号_和用来聚合的字段中文名称c,且在进行小计标签的渲染填充工作时,小计插件根据List属性数据内每个子DTO类对象的中文名称c属性的值进行分组;
在Word模板的额外配置行中,其表格文本内容为[$subtotal_中文名称d] 的形式,中文名称d用来标记被聚合的属性字段;
在对小计标签进行渲染填充时,小计插件会结合分组和被聚合的属性字段,给每组数据额外增加一行数据,即增加一个子DTO类对象,此行数据内会加和此组数据里所有中文名称d对应属性的值,最后和处理前的行数据一同被渲染出来;
例如,用户想在某个表格内根据产品名称字段,来聚合相加产品费用字段,业务端传来的数据一共根据产品名称的不同可分为3组,每组分别有3行数据,那么渲染时每组都会额外增加一行小计行数据,最后得到的结果一共有12行数据;
(5)通过合计插件对word模板中的合计填充标识符进行解析识别和处理填充,在word模板中配置在表格内,用$total作为识别,$total后面连接的内容为下划线符号_和用来合计的字段中文名称d,并作为word模板的额外配置行存在,在进行行循环标签或小计标签的渲染填充工作时,合计插件会额外对此行中匹配到的字段属性进行记录,并将此表格内所有的行数据下的此属性值进行累加,添加到表格的最末行。
进一步,整体打印流程的完成,还包括客户端、业务端和后台服务端,后台服务端包括filestore文件服务平台、NOSP系统和Redis数据库,filestore 文件服务平台作为微服务框架中的后台文件服务平台,整合了文件云存储能力,用于提供Word模板文件存取工作的服务,NOSP系统作为为服务架构中的中控基础数据服务平台,用于提供维护字段对照表管理工作的服务,从而实现Word文件渲染过程中中文标签名称和属性code路径的存取功能,此外,选用Redis这一非关系型数据库来记录当前打印服务请求的状态和结果,主要是源于其存取效率高、操作简易和普及度广等特点;
客户端用于处理用户行为,处理后台服务端的接口请求、响应,对应图1中的步骤1、2;并在请求发送成功后进行结果轮询,对应图1中的步骤3、7;将生成的结果文件进行展示或下载,对应图1中的步骤19、22、23、24;
业务端负责当前打印请求的服务初始化工作,通过雪花算法生成唯一流水 id,对应图1中步骤4、6、7;并在Redis数据库生成本次调用的记录实体,用于后续打印状态和结果文件的存取工作,对应图1中的步骤8;并通过与用户交互查询需要打印的单据数据,再将其传送给打印平台进行后续工作,对应图1中的步骤9、10、11;
进一步地,如图2所示,展示业务端在给打印平台传输单据数据时的数据结构,其中,流水号(serialld)用于本次服务调用的唯一性标识id,支撑各个模块之间的交互;模板id(templateld)用于打印平台进行模板文件的下载和解析;场景编码(sceneCode)用于打印平台获取字段对照表;打印类型(printType) 用于区分三种打印方式,多单据的情况下进行分页打印、连续打印还是单表打印;打印业务数据集(wordParamList)用于传输单据根DTO数据,单据根DTO类对象里的数据分为表头数据和表体数据,具体内容见步骤S1-S5。
打印平台作为整个打印流程的关键中枢部分,主要负责获取Word模板文件并对其进行解析的工作,对应图1中的步骤13、14、15、16,具体的解析过程见步骤S1-S5;并根据从Word模板文件中解析到的信息和从业务端接收到的单据数据进行整理、渲染工作,对应图1中的步骤17,具体的渲染过程见步骤S1-S5;在结果文件生成后,通过filestore文件服务平台将其上传至云端,并将用于下载的链接返回给客户端,对应图1中的步骤18、19;在打印平台的工作流程中,一旦某个环节发生错误或请求超时时,则在后台Redis数据库中更新本地调用的状态,用于客户端轮询获取调用结果;
在后台服务端中,通过filestore文件服务平台实现Word模板文件的存取工作,通过NOSP系统管理字段对照表,通过Redis数据库记录当前打印服务请求的状态和结果,利用其高性能、单线程的特点提供高效稳定的后台支撑服务。
本发明具有降低成本、提高效率、提高打印质量和用户体验等优点,首先,在降低成本方面,普通业务人员即可上手操作,为IT研发资源不足的企业减低人力成本,开发者可以复用既有能力,同时可继承word中对字段和纸张样式的配置能力,减少代码开发时间,并通过提供配置的方式来快速实现需求,缩短开发和运维等时间,降低沟通和测试成本、服务器硬件成本和运营成本等。在使用本打印平台进行打印需求开发时,对于整个开发团队,项目产品经理只需要提供打印模板和搭建字段对照表,后端工程师只需要对要打印的单据数据进行查询和传输工作,前端工程师只需要对单一打印页面和单一打印按钮进行开发即可。而在传统的打印服务开发过程中,为了明确所有字段的展示效果,前后端工程师需要对单据数据进行大量且繁琐的联调工作,如后端工程师需要调整传输数据的类型,前端工程师需要调整结果文件的页面展示效果;
其次,在提高效率方面,通过功能插件开发,如小计插件、行循环插件等,即可满足一批新增或变更需求,极大改善了客户需求响应效率,在配置无法满足的情况,可以复用平台能力,节省一部分开发工作量,平台能力复用缩短了端到端的交付时长,如测试时长、集成发布时长等。在传统的打印服务开发过程中,一旦前一次开发迭代结束交付,后期需要增加新的打印字段或调整打印结果文件的展示效果时,都需要牵动整个开发团队进行新一轮的迭代,项目产品经理需要明确改进需求,后端工程师需要对修改后的数据进行重新查询和整理,前端工程师需要对展示页面进行调整,这无疑是对整个团队开发资源的浪费。而在使用了本打印平台进行需求开发后,遇到相同的字段调整或展示效果修改问题时,只需要项目产品经理提供新的打印模板并根据字段调整情况维护字段对照表即可,既减少了不同职责人员之间的联调交互工作,也能从根本上减少前后端工程师的工作量。并且由于模板文件本身是可存储的,提供新的模板文件并不会覆盖旧的模板文件,亦可实现对历史迭代工作内容的保存;
接着,业务统一调用打印服务,在进行业务组装时,能大大降低系统bug率, 提升交付质量,所见即所得的功能设计理念,降低用户交互理解成本,统一的配置流程,实现企业级打印功能和流程支撑。在引入了本打印平台后,不同的业务组公用一套后台打印服务,可以大大提升技术规范性,并便于相关文档、开发经验的维护。
最后,便捷的流程化配置和快速的功能拓展接口服务,面对功能需求时能够快速响应,并在人员的代码能力有限的情况下对功能快速部署。例如,若要引入新的标签类型或者新的表格处理方式,只需要在本打印平台内进行新功能的开发,即可实现所有业务组的支持,而不需要各业务进行独立组内开发工作,从根本上消除了重复性的开发工作。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (8)

1.一种基于Word模板和功能插件的打印平台,其特征在于,包括数据处理层、渲染层和插件层,所述插件层包括二维码插件、图片插件、行循环插件、小计插件和合计插件;
基于Word文件特点,将打印数据分为表头字段和表体字段,在数据处理层中打印数据时,将表头字段定义为根DTO类的属性,即为一级属性,表体字段定义为子DTO类下的属性,即为二级属性,多个子DTO类下的属性对象组成一个List作为根DTO类的属性,该List为字段数据拼接入参前的数据结构,该数据结构并用于打印平台对表格内的行列数据进行填充;
在渲染层对打印数据进行数据准备和数据填充,数据准备阶段包括以下几个步骤:
S1、获取Word模板的文件流和字段对照表信息,每个字段对应一个中文名称、属性code、类型,中文名称用于在Word模板中作为标签,打印平台获取中文名称后查询对应字段的属性code,获取数据;
S2、对多层级属性进行平铺操作,使它们统一转换为二级属性;
S3、解析Word模板文件,整理其中的特殊标签,特殊标签包括小计标签、行循环标签、二维码标签和图片标签,并在解析过程中记录相关标签渲染时需要的信息;
小计标签和行循环标签所在表格里的表头字段,用于识别渲染时,通过字段映射来获取根DTO类对象下对应的List属性,从而获取对应数据进行填充,并记录图片标签标明的图片尺寸,用于渲染时设定图片的尺寸;
S4、根据步骤S3整理的小计标签和行循环标签的结果,将表头字段填充进对应的根DTO类的List属性里,使得List属性下的每一个子DTO类的属性对象均获得此表头字段的数据;
S5、标签数据绑定:(1)对于表头文本标签,根据其字段对照表的属性code,将根DTO类下的对应属性值与标签文本信息进行数据绑定操作;(2)对于小计标签和行循环标签,在根DTO类中找到对应的List属性数据,连同字段对照表一起进行绑定;(3)对于图片标签和二维码标签,根据步骤S3中的图片尺寸,设置生成图片渲染对象,再将图片渲染对象与图片标签或者二维码标签进行绑定;
在数据填充阶段,通过Apache Poi框架的渲染方法对表头字段进行渲染,在对表体字段进行填充时,通过插件层对表体字段对相关的填充标识符进行解析识别和处理填充操作。
2.根据权利要求1所述的一种基于Word模板和功能插件的打印平台,其特征在于,还包括客户端、业务端和后台服务端,所述后台服务端包括filestore文件服务平台、NOSP系统和Redis数据库;
所述客户端用于处理用户行为,处理后台服务端的接口请求、响应,并在请求发送成功后进行结果轮询,将生成的结果文件进行展示或下载;
所述业务端负责当前打印请求的服务初始化工作,通过雪花算法生成唯一流水id,并在Redis数据库生成本次调用的记录实体,用于后续打印状态和结果文件的存取工作,并通过与用户交互查询需要打印的单据数据,再将其传送给打印平台进行后续工作;
在后台服务端中,通过filestore文件服务平台实现Word模板文件的存取工作,通过NOSP系统管理字段对照表,通过Redis数据库记录当前打印服务请求的状态和结果。
3.根据权利要求1所述的一种基于Word模板和功能插件的打印平台,其特征在于,通过二维码插件对Word模板中的二维码标签进行解析识别和处理填充,具体的,二维码标签在Word模板中用%作为识别,%后连接的内容分别是字段对照表里设置的中文名称a、下划线符号_和图片像素大小的宽度、高度值。
4.根据权利要求1所述的一种基于Word模板和功能插件的打印平台,其特征在于,通过图片插件对Word模板中的图片标签进行解析识别和处理填充,具体的,图片标签在Word模板中用%作为识别,%后面连接的内容分别是字段对照表里设置的中文名称b、下划线符号_和图片像素大小的宽度、高度值,且图片标签可以放进表格内构建填充标识符,使得渲染的表格每行都有不同的图片内容。
5.根据权利要求1所述的一种基于Word模板和功能插件的打印平台,其特征在于,通过行循环插件对Word模板中的行循环标签进行解析识别和处理填充,具体的,行循环标签在Word模板中固定为$row,且在进行行循环标签的渲染填充工作时,行循环插件根据字段对照表和List属性数据进行字段的识别和填充操作。
6.根据权利要求1所述的一种基于Word模板和功能插件的打印平台,其特征在于,通过小计插件对Word模板中的小计标签进行解析识别和处理填充,具体的,小计标签在Word模板中固定为$merge作为识别,$merge后面连接的内容为下划线符号_和用来聚合的字段中文名称c,且在进行小计标签的渲染填充工作时,小计插件根据List属性数据内每个子DTO类对象的中文名称c属性的值进行分组;
在Word模板的额外配置行中,其表格文本内容为[$subtotal_中文名称d]的形式,中文名称d用来标记被聚合的属性字段;
在对小计标签进行渲染填充时,小计插件会结合分组和被聚合的属性字段,给每组数据额外增加一行数据,即增加一个子DTO类对象,此行数据内会加和此组数据里所有中文名称d对应属性的值,最后和处理前的行数据一同被渲染出来。
7.根据权利要求1所述的一种基于Word模板和功能插件的打印平台,其特征在于,通过合计插件对word模板中的合计填充标识符进行解析识别和处理填充,在word模板中配置在表格内,用$total作为识别,$total后面连接的内容为下划线符号_和用来合计的字段中文名称d,并作为word模板的额外配置行存在,在进行行循环标签或小计标签的渲染填充工作时,合计插件会额外对此行中匹配到的字段属性进行记录,并将此表格内所有的行数据下的此属性值进行累加,添加到表格的最末行。
8.根据权利要求2所述的一种基于Word模板和功能插件的打印平台,其特征在于,在步骤S1中,在NOSP系统中配置字段对照表映射关系,映射关系里的中文名称是展示在Word模板中的标签或填充符内容,映射关系里的属性code是业务端定义的属性链路,多层级属性的不同层级间用.符号分隔。
CN202210573315.XA 2022-05-24 2022-05-24 一种基于Word模板和功能插件的打印平台 Active CN115098047B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210573315.XA CN115098047B (zh) 2022-05-24 2022-05-24 一种基于Word模板和功能插件的打印平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210573315.XA CN115098047B (zh) 2022-05-24 2022-05-24 一种基于Word模板和功能插件的打印平台

Publications (2)

Publication Number Publication Date
CN115098047A true CN115098047A (zh) 2022-09-23
CN115098047B CN115098047B (zh) 2024-04-23

Family

ID=83289522

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210573315.XA Active CN115098047B (zh) 2022-05-24 2022-05-24 一种基于Word模板和功能插件的打印平台

Country Status (1)

Country Link
CN (1) CN115098047B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116383546A (zh) * 2023-06-06 2023-07-04 深圳思谋信息科技有限公司 文件处理方法、系统、计算机设备及计算机可读存储介质
CN117453158A (zh) * 2023-08-22 2024-01-26 深圳大道云科技有限公司 票据的定制化生成方法、设备及存储介质
CN117950608A (zh) * 2024-03-27 2024-04-30 深圳市维度数据科技股份有限公司 一种基于人工智能的报表打印管理系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050024682A1 (en) * 2000-11-30 2005-02-03 Hull Jonathan J. Printer with embedded retrieval and publishing interface
US20060279771A1 (en) * 2005-06-14 2006-12-14 Bottomline Technologies (De) Inc. Server for generating a print object and making the pint object available for secure printing at a remote location
CN111045615A (zh) * 2019-12-19 2020-04-21 厦门商集网络科技有限责任公司 一种在浏览器端自定义js模板的打印方法及系统
CN114239484A (zh) * 2021-12-15 2022-03-25 浪潮通信信息系统有限公司 前台定制发票的导出方法及导出系统
CN114281276A (zh) * 2021-12-06 2022-04-05 浪潮软件股份有限公司 一种服务文档打印方法、装置及计算机可读介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050024682A1 (en) * 2000-11-30 2005-02-03 Hull Jonathan J. Printer with embedded retrieval and publishing interface
US20060279771A1 (en) * 2005-06-14 2006-12-14 Bottomline Technologies (De) Inc. Server for generating a print object and making the pint object available for secure printing at a remote location
CN111045615A (zh) * 2019-12-19 2020-04-21 厦门商集网络科技有限责任公司 一种在浏览器端自定义js模板的打印方法及系统
CN114281276A (zh) * 2021-12-06 2022-04-05 浪潮软件股份有限公司 一种服务文档打印方法、装置及计算机可读介质
CN114239484A (zh) * 2021-12-15 2022-03-25 浪潮通信信息系统有限公司 前台定制发票的导出方法及导出系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李艺凡;卢建军;卫晨;刘志鹏;: "基于Lodop的Web方式单据打印技术的改进及实现", 信息技术, no. 12, 25 December 2014 (2014-12-25) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116383546A (zh) * 2023-06-06 2023-07-04 深圳思谋信息科技有限公司 文件处理方法、系统、计算机设备及计算机可读存储介质
CN116383546B (zh) * 2023-06-06 2023-08-11 深圳思谋信息科技有限公司 文件处理方法、系统、计算机设备及计算机可读存储介质
CN117453158A (zh) * 2023-08-22 2024-01-26 深圳大道云科技有限公司 票据的定制化生成方法、设备及存储介质
CN117950608A (zh) * 2024-03-27 2024-04-30 深圳市维度数据科技股份有限公司 一种基于人工智能的报表打印管理系统
CN117950608B (zh) * 2024-03-27 2024-06-18 深圳市维度数据科技股份有限公司 一种基于人工智能的报表打印管理系统

Also Published As

Publication number Publication date
CN115098047B (zh) 2024-04-23

Similar Documents

Publication Publication Date Title
CN115098047A (zh) 一种基于Word模板和功能插件的打印平台
US7895611B2 (en) Methods and apparatus for creation of parsing rules
CN115658041B (zh) 基于在线业务流程编排的低代码增强业务实现方法
CN101122899B (zh) 报表的生成方法和设备
US20070136363A1 (en) Systems and methods for report design and generation
CN109933752A (zh) 一种导出电子文档的方法和装置
CN102117202B (zh) 基于j2ee架构的代码生成装置
CN111327679B (zh) 一种规则解析方法及装置
CN108228119A (zh) 基于hxml的打印方法、终端设备及存储介质
CN110442822A (zh) 一种小程序内容展示方法、装置、设备及存储介质
US20040044678A1 (en) Method and apparatus for converting legacy programming language data structures to schema definitions
US7257647B2 (en) Development environment platform using message type mapping for converting message and providing information between systems having different data structures
CN113297825A (zh) 动态可视化的表单应用设计系统和计算机可读存储介质
CN111126019B (zh) 基于模式定制的报表生成方法、装置和电子设备
CN111062195A (zh) 一种文件处理的方法、文件处理装置、设备及存储介质
CN111338586A (zh) 打印对象处理方法、装置、电子设备及可读存储介质
CN114707474A (zh) 报表生成方法、装置、电子设备及计算机可读存储介质
CN114594927A (zh) 低代码开发方法、装置、系统、服务器及存储介质
CN108446262A (zh) 一种表单生成、分析方法及装置
CN113568614A (zh) 任务发布方法、电子设备及存储介质
CN102567066B (zh) 业务系统开发方法、平台及系统
CN113253951A (zh) 纸质合同信息套打方法、系统、装置和可读存储介质
CN110148019B (zh) 信息流运营模板创建方法和信息流运营模板创建系统
CN110866054A (zh) 一种标签配置方法、装置及计算机存储介质
CN116956845A (zh) 一种快速配置表格字段的方法、页面字段的生成方式和系统

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