11.1 打印功能
概述
UniEAP Report为用户提供了一套完善的打印服务,支持多种打印方式,并提供多种打印途径。本文档将对UniEAP Report在应用中遇到的有关打印需求和报表打印功能特点进行总结,着重描述在报表打印时的注意事项,指导用户使用报表打印功能。文档内容仅适用于UniEAP Report的打印功能范畴。
功能介绍
打印属性
页面大小
UniEAP Report提供几种常见纸张类型。如果没有符合用户期望的纸张大小,用户可以采用自定义纸张大小的方式,自定义纸张的单位是“毫米”,精确到“0.1”。如需要更高的精确度,需要手动修改报表定义文件的代码。
【注意】自定义的纸张大小必须小于打印机能支持的最大纸张,否则会出现打印错位的情况。
页眉页脚
页眉或页脚都分为左、中、右三部分,每一部分可以添加文字、公式或图片等。
- 使用前提
使用页眉页脚前,需要选中页眉页脚的“显示”属性。该属性的默认值为不显示,在这种状态下,对页眉页脚的所有设置均不会保存并生效。 相关属性
- 页面显示:对页眉页脚的显示状态进行控制。如:第一页显示、奇数页显示、所有页显示等。
- 边距:指页眉页脚内容距离页面边缘的距离。如果页眉页脚的边距值大于对应的页边距,内容将不会显示。
- 显示分割线:在页眉文字的下方、页脚文字的上方各显示一条横线。
- 字体、背景色:编辑页眉页脚的文字以及背景。
- 插入图片:插入方式与普通单元格的图片操作一致。
【注意】在打印时,页眉页脚插入的图片会按照原尺寸显示。
相关公式
除了可以使用普通单元格的公式,UniEAP Report还提供一些仅使用于页眉页脚的公式,主要有:- 页码总数:&[PAGE_COUNT]。
- 页码编号:&[PAGE_NO]。
【注意】分段报表的页码总数无法获得,仅可以得到第一段报表的页数。
【例】“第几页”的表示方法为:=concat('第','&[PAGE_NO]','页') ,还可以直接写为 第&[PAGE_NO]页
打印控制
UniEAP Report支持对每个单元格进行打印控制,设置相关属性的位置在格式设置-其他中,类型包括:
- 不打印
不打印单元格所有相关信息,包括边框。 - 打印
打印单元格所有信息。 - 仅打印内容
仅打印单元格的文字内容。 仅打印样式
打印除文字以外的单元格信息,如边框、背景色等。另外,UniEAP Report还可以根据用户的权限打印报表。设置方法为:
- 在报表设计器中,选择某单元格的“文本属性”中“公式”tab页,设置“可打印”属性:true为打印,false为不打印。
根据使用报表自带的用户全局变量UID,通过报表公式的组合,对“可打印”属性进行设置,实现权限的控制。
【例】当登陆用户的id为1234时,打印某单元格。 可以在指定单元格的“可打印“属性中写入公式: =case($UID=’1234’,true,false)。
打印方式
分栏打印
将报表制作成分栏报表,然后打印。UniEAP Report支持两种分栏方式:按行分栏、按页分栏。
套打
在制作报表的过程中,加入基准图片。依据基准图片指定报表打印位置,配合单元格打印控制属性使用,参见插入模块-套打章节。
【注意】选定的基准图片需要是原比例的。否则报表在“套打”时会出现误差。当误差情况不可避免时,可以对报表内容的位置做部分调整,来满足打印后的效果。
缩打
在报表设计器中,用户可以定义报表缩印属性,通过设置缩印方式实现对报表的缩打需求,缩印方式包括按用户指定比例、适合整页、适合宽度、适合高度。打印时,报表将按预定的缩印方式被缩打。
横纵向打印
在报表设计器中,用户可以定义报表打印方向,包括纵向打印(默认)和横向打印。
- 纵向打印
指查看报表方向与打印机进纸方向平行。 横向打印
指查看报表方向与打印机进纸方向垂直。【注意】在横向打印时,设置报表纸张大小,宽和高是以查看报表方向为基准,与打印机进纸方向无关。 从纵向打印切换到横向打印时,报表宽度值和高度值会自动交换,一般宽值大于高值。
按分页符打印
报表中的分页符有“格上分页”和“格下分页”两种,在打印过程中,会按报表分页符的位置进行分页打印。
运行期调整打印设置
以上描述的打印设置,都是在开发期,通过报表设计器中的页面设置的,而在实际的业务打印过程中,经常会遇到一些特殊情况,比如:
- 报表是横向扩展的,表格中数据填充总宽度实际超过了一页,而我只想缩小一下,打印在一页上。
报表是横向、纵向扩展的,表格中数据填充总宽度、总高度都超过了一页,而报表的页面设置是A4纸,而我的打印机支持A3、A4纸打印,我能否更换成A3纸,这样一页就可以打印出来了
以上这两种场景,都可以实现,在报表打印预览页面,提供了‘页面设置’按钮,在这里可以对页面进行重新设置,如下图:
这里的设置后,点击‘确定’按钮,预览页面会按照页面设置重新生成预览,再次点击‘打印’按钮,就会按照新的打印设置进行打印了。
打印途径
客户端预览打印
UniEAP Report的客户端打印分为两个打印控件,一是Reportprint打印控件,二是是Lodop打印控件。首先预览打印效果,然后用户可以进行修改部分打印设置、选择打印机等操作,最后提交任务并打印。
一键打印
UniEAP Report的一键打印同样分为三个打印控件,Reportprint和Lodop。Reportprint和Lodop打印功能可以在客户端根据默认打印机设置进行打印,不会出现预览和打印机选择界面,直接打印报表。
直接打印实现方法(Web不显示报表)
函数说明:
打印报表的js函数
函数语法:
reportPrint(param,type)
参数说明:
名称 | 数据类型 | 说明 | 是否必需 |
---|---|---|---|
param | 对象 | 报表参数的集合 | 是 |
type | 字符串 | 取值为:”applet”,”lodop”,”flex”三种打印方式,默认为applet | 否 |
示例:
var param={};
param.reportId="089ac167-785c-4b39-a864-ec710b5a94";//报表id
param.newReport="true";
param.name=unieap.byId("s_name").getValue();//报表参数 name
//打印相关参数
param.isResultant="false";
param.silent="no";
param.setPageSetup="false";
reportPrint(param,”applet”);// lodop/flex
打印参数说明:
- reportId:需要打印的报表ID。
- isResultant: 标识是否是报表结果的打印
- setPageSetup: 标识是否出现applet打印设置界面
- silent (yes 或 no) : 标识是否为一键打印,如不写则为no
同时打印多张报表
目前只适用于lodop打印。
同时打印定义不同的多张报表时,只需将多个报表id按格式输入就可以,例如:
var param={};
param.batch="true";//设置为批量导出
var reports=[];//储存报表相关信息
var report1={};//储存第一个报表相关信息
report1.reportId="99338f12-bb0d-49ea-b3bc-0b310ac0e9a0";//第一个报表的报表id
report1.params={//第一个报表的参数
'name':'刘先生',
'sex':'男'
}
reports.push(report1);
var report2={};//储存第二个报表相关信息
report2.reportId="99338f12-bb0d-49ea-b3bc-0b310ac0e9a0";//第二个报表的报表id
report2.params={//第二个报表的参数
'name':'余小姐',
'sex':'女'
}
reports.push(report2);
param.reports=JSON.stringify(reports);
reportPrint(param,"lodop");