1. 概述
1.1 版本
报表服务器版本 | 功能变更 |
---|---|
11.0 | - |
1.2 功能简介
在进行报表集成时,常常需要通过 JavaScript 来调用 FR 的打印事件。例如:不查看报表直接打印、批量打印
在实现具体实例前,您需要了解 JS 调用 FR 打印方法的语法。
注:打印功能不支持移动端。
1.3 注意事项
1)10.0 设计器和部署包使用的都是 openjdk,而使用 openjdk 无法启动 flash 打印,使用 Oracle/sun jdk 可以。
2)flash 打印目前是已经被淘汰了的技术,很多浏览器都将不再支持 flash 打印,建议客户使用零客户端或本地打印。
3)模板的参数是包含'的,需要传入这个引号才能有正确的数据,可用\\'转义',例如:var a = "\\'234"; reportlets += ",a:'" + a + "'";
4)若 9.0 设计器升级至 11.0 版本,使用 JS 调用 FR 打印方法需要根据帮助文档重新编写 JS 代码,或去掉原 9.0 代码中的 FR.cjkEncode(),若 10.0 不开启模板认证则无需去掉。
5)若第三方系统引用打印接口,需要配套引用 finereport.css 和 finereport.js 文件,否则会打印失败。引用方式请参考 FR对象使用说明 。
2. 打印接口
JS 打印接口:FR.doURLPrint(config),使用 get 传参,具体 config 参数如下表所示:
参数 | 含义 |
---|---|
printurl | 需要打印的模板的应用地址和服务,如"http://localhost:8075/webroot/decision/view/report" 允许为空。如果为空的话,就使用当前的 servlet 地址。如果需要跨域,则此参数不能为空 |
isPopUp | 是否弹出设置窗口 true:弹出 false:不弹出 该参数说明如下:
|
data | 为需要打印的模板列表及其参数,如"[{reportlet: '1.cpt', p1: 'a'}, {reportlet: '1.cpt', p1: 'b'}]" |
printType | 打印类型 0:零客户端打印 1:本地打印 |
下面的参数为零客户端打印的参数,仅当 printType 为 0 时生效 | |
ieQuietPrint | IE 静默打印设置 true:静默 false:不静默 |
下面的参数为本地打印的参数,仅当 printType 为 1 时生效 | |
printerName | 打印机名 |
pageType | 打印页码类型 0:所有页 1:当前页 2:指定页 |
pageIndex | 页码范围 当 pageType 为 2 时有效 |
copy | 打印份数 |
needSelectSheet | 是否打印指定 Sheet 页 true:指定 Sheet 页 false或参数为空:打印全部 Sheet |
sheetIndex | Sheet页,只支持正整数或正整数区间 正整数示例:2 正整数区间示例:'7-10' |
示例:新建一个模板,在单元格 A1 添加「按钮控件」,并添加「点击」事件,如下图所示:
JS 代码:
var printurl="http://localhost:8075/webroot/decision/view/report";
var reportlets ="[{reportlet: 'GettingStarted.cpt', 地区: '华北'}, {reportlet: 'GettingStarted.cpt', 地区: '华东'}]";
var config = {
printUrl : printurl,
isPopUp : true,
// 是否弹出设置窗口,true为弹出,false为不弹出
data :{
// 多模板格式: [{reportlet: 'name.cpt', a: 'a1'}, {reportlet: 'name.cpt', b: 'b1'}] 同样的模板会出现多页
// 单模板格式: [{reportlet: 'name.cpt', a: 'a1', b: 'b1'}] 同样的模板只会有单页
reportlets: reportlets // 需要打印的模板列表
},
printType : 1, // 打印类型,0为零客户端打印,1为本地打印
// 以下为零客户端打印的参数,仅当 printType 为 0 时生效
ieQuietPrint : false,// IE静默打印设置 true为静默,false为不静默
// 以下为本地打印的参数,仅当 printType 为 1 时生效
printerName : 'Microsoft Print to PDF', // 打印机名
pageType: 2, // 打印页码类型:0:所有页,1:当前页,2:指定页
pageIndex: '1-3', // 页码范围。当 pageType 为 2 时有效
copy: 3, // 打印份数
};
FR.doURLPrint(config)
保存模板,选择填报预览,当点击按钮时,将使用本地打印方式打印模板,如下图:
注:如果无法正常打印,请参见文档 [新]打印 中的注意事项。
3. 服务器端打印接口
10.0 中,服务器端打印只能通过 JS 调用。如果不传参数,则弹窗;如果传参数,则静默打印。参数有默认值,不需要设置的话可以不传。
// 弹窗
window.contentPane.printReportServer();
// 静默打印
window.contentPane.printReportServer({
pageType: 2, // 打印页码类型:0:所有页,1:当前页,2:指定页
pageIndex: '1-3', // 页码范围。当 pageType 为 2 时有效
printerName: "" // 指定打印机
});
// 静默打印
window.contentPane.printReportServer({
pageType: 1
});
// 静默打印
window.contentPane.printReportServer({})