掌桥专利:专业的专利平台
掌桥专利
首页

一种创建自定义单据打印模板的方法、装置和计算机设备

文献发布时间:2023-06-19 12:16:29


一种创建自定义单据打印模板的方法、装置和计算机设备

技术领域

本申请涉及单据打印的技术领域,尤其是涉及一种创建自定义单据打印模板的方法和计算机设备。

背景技术

用户在使用erp系统的进销存相关功能时,存在将电子单据按照自定义格式实体纸质化的需求,也就是需要将电子采购单的相关信息转化为具体的采购合同,而市面上能支持表格打印分页的方案都是基于最基础原始的html表格实现的,这类表格的功能极为简陋,无法满足现今绝大多数的产品需求与样式调整,如果要分页就要舍弃绝大部分表格的高级功能(高级功能有:复合表格的功能、表格单元格内容自定义的功能和可编辑表格的功能等),使表格的分页打印和表格的绝大高级部分功能无法同时实现。

目前将电子采购单的相关信息转化为具体的采购合同的技术,存在以下的可提高之处:

1.需要安装第三方打印插件如菜鸟打印或者c-lodop等,最终的打印效果与打印预览效果存在一定的差异。

2.创建模版时,各个元素之间没有做到吸附对齐,用户使用体验较差,并且绘制的模版美观度不足。

3.没有实现单据中表格的自定义列功能(自定义列功能即:用户可以根据实际需要补充系统采购单以外的数据和信息,如果选择自定义列的属性为金额列或者数字列,系统会在表格底部设置总计功能)。

发明内容

为了提高最终打印效果与打印预览效果的一致性,本申请提供一种创建自定义单据打印模板的方法和计算机设备。

第一方面,本申请提供一种创建自定义单据打印模板的方法,采用如下的技术方案:

一种创建自定义单据打印模板的方法,包括:

依次渲染打印区域内的元素;

当待渲染元素上方的元素出现高度偏移时,把所述待渲染元素渲染位置的高度偏移所述高度偏移的高度偏移值;

把所述待渲染元素渲染至当前页或者进行跨页渲染,所述进行跨页渲染是把所述待渲染元素整体渲染至当前页的下一页或者把所述待渲染元素的一部分渲染至当前页并把另一部分渲染至当前页的下面N页,所述N为正整数。

采用上述技术方案,可以灵活地调节自定义单据打印模板的高度,把同一个元素完整的渲染在同一页面上,使打印效果与打印预览效果不存在任何差异,实现了百分百所见即所得的用户体验。

本申请在一较佳示例中可以进一步配置为:

把所述待渲染元素渲染至当前页或者进行跨页渲染的步骤包括:

区分所述待渲染元素的元素类型是表格类还是非表格类;

当所述待渲染元素的元素类型是表格类时,采用表格分页拆分算法把表格渲染至当前页或者进行跨页渲染;

当所述待渲染元素的元素类型是非表格类时,判断所述待渲染元素的首部和所述待渲染元素的尾部是否在同一页,若是,则把所述待渲染元素渲染至当前页,否则,把所述待渲染元素整体渲染至当前页的下一页。

采用上述技术方案,对自定义单据打印模板进行智能分页,实现了根据用户选择的纸张类型和纸张方向进行html智能分页,不需安装任何第三方插件即可调用打印机打印。

本申请在一较佳示例中可以进一步配置为:当所述待渲染元素的元素类型是表格类时,采用表格分页拆分算法进行渲染的步骤包括:

获取表格的总高度,并正常渲染所述表格;

当正常渲染后所述表格的底部位置和所述表格的头部位置所在的页面一致并且表格的底部位置未位于当前页的最后一行时,则把表格渲染至当前页;

当正常渲染后所述表格的底部位置和所述表格的头部位置所在页面不一致或者表格的底部位置位于当前页的最后一行时,则对表格进行拆分并进行跨页渲染,同时用拆分后并进行跨页渲染的表格替换掉正常渲染的表格;

把拆分后的表格总高度减去拆分前的表格总高度,得到拆分后的表格的高度偏移值。

采用上述技术方案,避免了单元格的内容无法在自定义单据打印模板中完整地展示,也避免了因单元格空间的浪费而造成的纸张浪费,同时提升了自定义单据打印模板的美观度。

本申请在一较佳示例中可以进一步配置为:创建自定义单据打印模板的方法还包括:

按照用户自身所需要的元素和元素类型,创建自定义单据打印模板,所述元素类型分为:自定义文本类、变量文本类、表格类和图片类。

所述自定义单据打印模板具有用户根据自身需求添加所需的列,所述的列可以为金额列,也可以为数字列。

在上述技术方案中,用户可以按照自身的需求对自定义文本类、变量文本类、表格类和图片类元素进行自由组合,对文本类元素可进行基本的文字大小、字体、颜色、对齐方式、加粗和斜体等样式进行设置,对表格类元素可以设置是否显示预设列、对列的顺序进行调整和是否添加自定义列,还可以对当前采购单中的商品列做进一步的信息补充,甚至连额外的合计功能和币种选择功能,都可以与最终的总金额进行加减联动。

本申请在一较佳示例中可以进一步配置为:在生成所述自定义单据打印模板时,采用开源的拖拽组件,开源的拖拽组件可以使拖拽的元素吸附对齐。

采用上述技术方案,可以大幅提升自定义单据打印模板的美观度。

第二方面,本申请提供一种创建自定义单据打印模板的装置,采用如下的技术方案:

渲染模块,用于依次渲染打印区域内的元素;

偏移模块,用于当待渲染元素上方的元素出现高度偏移值时,把所述待渲染元素渲染位置的高度偏移所述高度偏移值;

跨页模块,用于把所述待渲染元素渲染至当前页或把所述待渲染元素进行跨页渲染。

采用上述技术方案,实现了根据用户选择的纸张类型以及纸张方向进行html智能分页,用户无需安装任何第三方插件即可实现调用打印机打印,完全实现了100%的所见即所得的用户体验,使最终打印效果与打印预览不存在任何差异。

本申请在一较佳示例中可以进一步配置为:创建自定义单据打印模板的装置还包括:

自定义列模块,用于用户根据自身需求在自定义单据打印模板中添加列;

吸附对齐模块,用于使拖拽的元素吸附对齐。

上述技术方案实现了本申请的自定义列功能,通过上述技术方案,可以对当前自定义单据打印模板中采购单的商品列表做进一步的信息补充,甚至额外的合计功能和币种选择功能,都可以与最终的总金额进行加减联动。

第三方面,本申请提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现所述创建自定义单据打印模板的方法的步骤。

综上所述,本申请包括以下至少一种有益技术效果:

1、本申请使用html现有的print.css原理进行打印,结合本申请的智能分页算法,根据用户选择的纸张类型和纸张方向进行html智能分页,用户无需安装任何第三方插件即可调用打印机进行打印,该方案实现了100%的所见即所得的用户体验,使最终打印效果与打印预览不存在任何差异。

2、本申请采用目前开源的拖拽组件vdr,实现了自定义模板时各拖拽元素的吸附对齐功能,使用户体验和打印模板的美观度都得到了大幅度提升。

3、本申请具有自定义列功能,可以对当前采购单的商品列表做进一步的信息补充,甚至额外的合计功能和币种选择功能,都可以与最终的总金额进行加减联动。

4、本申请的创建自定义单据打印模板的方法,节省了二次转化为原始简陋的html表格的步骤,也节省了对接第三方打印插件api的步骤(比如:使用lodop打印插件,要额外学习这些lodop api知识,并且还要将html按照一定规则转化成lodop独有的非html标签),另外还节省了让用户安装第三方插件的成本,从而极大地降低了前期打印功能开发成本和后续面对频繁业务变更带来的打印功能维护成本。

5、本申请的创建自定义单据打印模板的方法,使创建打印模板的方式更加灵活,用户可自定义的程度更高,并且支持元素拖拽位置的调整和元素所占区域大小的调整,元素的文字颜色、元素的字体和行高都可以单独进行设置。

6、本申请的创建自定义单据打印模板的方法,在将表格的一系列高级功能保留下来的前提下,实现了根据不同纸张类型对自定义单据打印模板进行智能分页。

7、本申请的创建自定义单据打印模板的方法,可以应用于跨境电商SAAS软件-领星ERP系统中的采购合同,跨境电商SAAS软件-领星ERP系统的用户可以通过对单据信息和数据表头列进行设置,生成通用的单据打印模版,实现基于SAAS模式下根据实际业务数据和预设单据打印模板,生成用户需要的电子单据(例如:采购合同),并使用ERP系统的打印功能将电子单据打印至A4纸上或其它规格的纸上,本申请的创建自定义单据打印模板的方法,也可以应用于需要实现电子单据和合同的快捷自定义生成与打印的各行各业中,应用前景非常广泛。

附图说明

图1是本申请的创建自定义单据打印模板的方法中自定义列界面的示意图。

图2是本申请的创建自定义单据打印模板的方法中可拖拽缩放元素的界面布局图。

图3是本申请的根据用户需求对元素进行自由组合的示例图。

图4是本申请的选择要打印的合同的界面图。

图5是本申请的生成采购合同的流程图。

图6是本申请的表格分页拆分算法的流程图。

图7是本申请的创建自定义单据打印模板装置的结构框图。

图8是本申请的计算机设备的结构框图。

具体实施方式

以下结合附图对本申请作进一步详细说明。

采用本申请的创建自定义单据打印模板的方法,如图1所示,对当前系统的采购单的商品列做进一步的信息补充,甚至额外的合计功能和币种选择功能,都可以与最终的总金额进行加减联动。

采用开源的拖拽组件vdr ,如图2所示,用户点击界面的左侧部分,选择自定义单据相关的变量数据,然后按照自身的需求对自定义文本类、变量文本类、表格类和图片类元素进行自由选择和组合。

用户按照自身的需求,对文本类元素进行文字大小、字体、颜色、对齐方式、加粗和斜体等样式的设置,对表格类元素是否显示预设列进行设置,对列的顺序进行调整和对自定义列的添加,经过一系列的设置和调整之后,用户再创建采购合同模板,如图3所示,点击保存按钮,保存创建的采购合同模板中的相关数据。

如图4所示,用户选中具体的一个采购单号,点击打印合同按钮,把用户创建的采购合同模板中相关的变量类元素(除自定义文本以外的元素都为变量类元素)替换为该采购合同的实际相关字段的数据,此时,单据打印模板中的表格默认只有一行数据,替换为真实的采购单中的商品信息后,表格的行数是不确定的,所以,表格的总高度也是不确定的,当行数过多时,一页纸的范围就容纳不下一份完整的真实采购合同的内容,如果不正确分页,就会造成有些打印内容打印到纸张边缘或造成没有打印到纸张上的问题,本申请通过采用创建自定义单据打印模板的方法,可以解决该问题。

按照位置排序,由上至下依次渲染打印区域内的各个元素,并判断当前待渲染的元素是否为变量元素,若是,则从单据数据中获取实际数据替换掉原打印模板的内容,否则,正常渲染原打印模板中的自定义内容;如果当前待渲染元素上方的元素出现高度偏移,则把所述待渲染元素渲染位置的高度偏移所述高度偏移的高度偏移值;计算所述当前待渲染元素的首部和所述当前待渲染元素的尾部所在位置,根据所述当前待渲染元素的首部和所述当前待渲染元素的尾部所在位置是否在同一页,判断是否把所述当前待渲染元素进行跨页渲染;区分所述待渲染元素的元素类型是表格类还是非表格类;当所述待渲染元素的元素类型是表格类时,采用表格分页拆分算法进行渲染;当所述待渲染元素的元素类型是非表格类时,判断所述待渲染元素的首部和所述待渲染元素的尾部是否在同一页,若是,则把所述待渲染元素渲染至当前页,否则,把所述待渲染元素整体渲染至下一页;所述当前待渲染元素渲染完成后,继续渲染下一个元素,直到打印区域内的所有元素都渲染完为止,如图5所示。

如图6所示,根据实际数据渲染未拆分表格:获取未拆分表格每一行的行高值,形成表格行高数组Arr,设置当前页的待渲染表格高度currentH为0(所述待渲染表格高度currentH为在遍历表格行高数组Arr时,遍历过的行的行高值总和,例如:当遍历到第四行时,currentH就是遍历过的前面这四行的行高值的总和),遍历行高数组Arr,currentH依次加上遍历的行的行高值,这是为了得出在渲染具有n行的表格时,所述待渲染表格从第0行至第n行的待渲染表格高度currentH的值(所述n为正整数,所述待渲染表格高度currentH是一个随着遍历过的行数的增加而递增的值,每次待渲染表格高度currentH的值发生变化时,都会根据待渲染表格高度currentH和纸张的高度,确定待渲染表格渲染在当前页中的子表格的行数和高度),当遍历到行高数组Arr的行数为n时,所述待渲染表格高度currentH加上第n行的行高值,计算出当前待渲染行是否需要渲染至下一页或者当前待渲染行是否位于当前页的最后一行,如果当前待渲染行需要渲染至下一页或者当前待渲染行位于当前页的最后一行,则表示所述待渲染表格需要进行跨页渲染,例如:当前页的纸张高度是1100,当遍历到第n行时,所述待渲染表格高度currentH的值是1000,而第n行的下一行(即第n+1行)的行高值是110,如果把第n+1行渲染至当前页,则当前页需要渲染的子表格的总高度为1110,该子表格的总高度1110大于当前页的纸张高度1100,因此,会导致第n+1行不能得到完整的渲染,为了确保待渲染表格的内容可以在自定义单据打印模板中得到完整的渲染,把第n行和第n+1行渲染至当前页的下一页,并把当前页的第0行至第n-1行汇总为一个子表格渲染至当前页,并且得出所述待渲染表格需要进行跨页渲染,同时得出当前页渲染的子表格的待渲染表格高度currentH的值,当前页渲染的子表格的总行数为n-1,并终止遍历当前页的表格行高数组Arr,所述表格行高数组Arr去掉上述子表格中的行(上述的子表格中的行即是已拆分的第0~(n-1)行),然后重新设置所述待渲染表格高度currentH的值为0,再次遍历表格行高数组Arr,得到当前页的下一页所拆分的子表格数据,重复上述方法,渲染所述待渲染表格中的未渲染的行,直到把所述待渲染表格中所有的行都渲染完为止;当所述待渲染表格中所有的行都可以在当前页得到完整的渲染时,则所述待渲染表格不需要进行跨页渲染,把所述待渲染表格中所有的行都渲染至当前页即可。

一种创建自定义单据打印模板的装置,如图7所示,包括:

渲染模块,用于依次渲染打印区域内的元素;

偏移模块,用于当待渲染元素上方的元素出现高度偏移值时,把所述待渲染元素渲染位置的高度偏移所述高度偏移的高度偏移值;

跨页模块,用于把所述待渲染元素渲染至当前页或把所述待渲染元素进行跨页渲染。

自定义列模块,用于用户根据自身需求在自定义单据打印模板中添加列;

吸附对齐模块,用于使拖拽的元素吸附对齐。

如图8所示,一种计算机设备,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述创建自定义单据打印模板的方法的步骤。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

相关技术
  • 一种创建自定义单据打印模板的方法、装置和计算机设备
  • 单据分页打印方法、单据分页打印系统及计算机装置
技术分类

06120113229097