基于免费开放的E6开发平台的打印功能就是使用PDF实现的,PDF实现Web系统的打印套打,绝对是非常绝佳的选择,因为PDF完全可以在后台后代码生成后在浏览器中进行访问,然后打印即可。因为PDF可以精确定位每一个打印元素的位置,长宽,所以非常容易匹配待打印模板。
Web的打印一直以来都是一个不小的难题,所以有些系统专门开发了Web打印的浏览器插件,甚至有专门的js组件、专业的报表工具等等。
但是E6作为一个低代码开发平台,再去折腾这些显得有点不务正业,另外由于E6完全免费的,所以更不可能采用一些商业的报表组件,那样且不增加了用户的负担?所以在我们的早期的方案中就是采用html打印,通过设置CSS属性控制打印区域,对于不是非常复杂的套打,实实在在的解决了问题,客户也非常的满意。但是使用html打印的复杂需求,特别是涉及到表格的时候,往往很难去设置表格的属性使得套打精准。
使用html套打
后来随着需求越来越多,打印场景越来越复杂,发现使用html来精确控制自动分页,多页打印,甚至不同页面不同大小,不同属性的时候,那就非常难受了,于是果断放弃,决定直接采用PDF完成打印工作。
E6的打印有如下特点:
1、同一个表单可以配置多个打印模板,不同的打印模板打印不同的内容;
2、同一个打印模板支持多页打印,每页可以单独设置打印内容,甚至页面大小,页面背景图;
3、对查询列表支持分组打印,每个分组有自己独立的分组头,尾;
4、子表支持列表模式或卡片模式,卡片模式支持每行排列多个卡片;
5、支持主表,子表,卡片模式在同一页进行打印;
6、对于长内容(长文本,子表数据多)支持自动分页;
7、支持单条打印,也支持批量打印;
8、支持使用存储过程子表及汇总子表打印。
还有很多细小的特点供用户去发掘。
要在E6中增加打印模板非常简单,右键点击要打印的表单,点击弹出菜单项“增加打印模板”(或者“增加打印模板(分组模式)”),确定即可,其中分组模式只针对查询列表,只能在查询列表中才能看到这个打印模板;
增加打印模板
然后在左侧“工具箱”中就会列出所有表单相关的字段包括引用字段,比如客户表单引用了员工表单(业务员),那么工具箱中除了客户表单本身的字段之外,还可以找到“员工表单”的所有字段,而员工表单又引用了部门表单,所以还可以找到部门表单的所有字段(E6会上溯3级引用)。
设置打印页面的纸张大小,横排还是竖排,然后把所需要打印的字段拖拽到打印页面空白处即可。如果需要增加背景图,那就设置页面背景图属性,如果需要打印颜色,E6支持设置某个区域颜色或者整个页面背景颜色,支持渐变。
空白打印页面
如下图,工具箱中列出了所有本单据及引用单据的所有字段信息,只要能看到的字段都可以被打印,这就有效地解决了打印数据来源问题。
设置完成后效果图如下,也可以设置表格线,E6提供了画矩形,画圆,画线的工具,这些元素可用于绘制表格(当然通过画线的方式绘制表格比较费劲一些,所以可以采用背景图,在word中设计好背景后使用),如下图:
可以打印基本信息,图片,图码,可以使用E6脚本进行数据计算,数据转换(比如日期格式转换,数字金额转换,大小写转换,字段拼接等等);
支持子表打印,子表列宽打印时会根据设计时的列宽比例自动计算后填满表格宽度,子表高度会自动增加,自动分页;
子表支持卡片模式,卡片模式很神奇,可以实现很多意想不到的效果。
打印页面效果
生成PDF的效果如下,定位非常精准,与设计时完全一模一样,其中子表,卡片模式(如下面的图片列表)会随内容自动增加,文本自动换行。
打印效果
虽然使用PDF打印非常优秀,也很靠谱,但是......
当遇到不支持的字体的时候,就很不靠谱了,特别是一些符号,哪怕是word中拷贝过去的,只要这个字体PDF不支持那就打印出来一串串的小方块,排列得整整齐齐。
既靠谱又不靠谱的PDF!!!
,