1. 概述编辑
1.1 应用场景
8.0 或 9.0 版本都有 PDF 打印,Flash 打印和 Applet 打印这三种自带的打印方式。同时还有一个本地软件打印的插件,用来覆盖各种场景以及满足客户的特殊需求。
但是我们发现,这几种各有优缺点的打印方式的存在对客户的选择造成了一定的困扰。有用户反馈说,打印方式太多,不知道有什么区别,分别适合什么样的场景。
并且随着 Web 协议框架和技术的完善,有些打印方式渐渐被淘汰,部分浏览器对原本几种打印方式的支持也越来越差。
所以,为了提升用户的体验,简化打印的场景,我们在对打印功能进行了升级,将各种打印方式整合到一起,形成一个统一的打印入口,让客户的选择变得更加简单清晰。
注1:10.0 设计器和部署包使用的都是 openjdk,而使用 openjdk 无法启动 flash 打印,但使用 Oracle/sun jdk 可以。
注2:flash 打印目前是已经被淘汰了的技术,很多浏览器都将不再支持 flash 打印,建议客户使用零客户端或本地打印。
1.2 功能介绍
新打印只有两种选择:
零客户端打印:适合更偏向打印便捷性的客户,任何机器上随时都能打印。
本地软件打印:适合固定机器进行大量打印的客户,有更高的效率和更丰富的设置,不受浏览器约束。
同时新打印有以下特性:
易用:易于设置,可预先进行页面设置传递至打印机,并可以保存用户打印习惯,无需复杂设置,一键打印,同时对于市面上几乎所有类型打印机都能很好的支持。针式、 热敏打印机打印是容易出现打印不清晰、打印效果不好的问题都能通过本地软件打印得到解决。
功能丰富:提供套打、批量打印、打印内容控制、打印偏移、静默打印等丰富的功能。
性能强大:相同环境下,零客户端打印耗时不到同类竞品的一半,本地软件打印耗时不到同类竞品的 1/3。
2. 打印方法编辑
功能(Chrome 为例) | 零客户端打印 | 本地软件打印 |
---|---|---|
首选打印机 | × | √ |
打印偏移 | √ | √ |
静默打印 | IE 下 √ ,其他× | √ |
打印内容控制 | √ | √ |
套打 | √ | √ |
批量打印 | √ | √ |
服务器端打印 | √ | √ |
2.1 首选打印机
支持报表绑定打印机,打印报表时优先选择绑定的打印机进行打印,免去了用户每次都要选择打印机的麻烦。
2.2 打印偏移
增加页面边距设置,可以调整打印内容的边距来进行打印偏移,以适应不同打印机的打印效果不同的问题,详细介绍参见文档:打印偏移
2.3 静默打印
打印继承模板中的纸张、布局和边距设置,可在设计器中提前设置好要打印的样式,用户直接使用统一设置,不再弹出设置窗口,详细介绍参见文档:静默打印
2.4 打印内容控制
可在设计器中通过对内容进行设置,实现内容是否打印,详细介绍参见文档:预览、打印和导出单元格
2.5 套打
支持发票、货运单等内容的套打,详细介绍参见文档:套打
2.6 服务器端打印
直接调用服务器连接的打印机,可解决本地PC没有连接打印机无法打印的问题,详细介绍参见文档:服务器端打印
2.7 打印接口
提供了易调用的 JS 接口,通过简单的js编写,可以实现 自定义打印按钮 及 批量打印 等功能。
2.8 https 下的打印
支持 https 下的本地打印和零客户端打印,详细介绍参见文档:本地打印 https 配置说明
2.9 跨域打印
跨域打印 | 零客户端打印 | 本地软件打印 |
---|---|---|
https 访问 http | × | × |
http 访问 http | √ | √ |
http 访问 https | √ | √ |
https 访问 https | √ | √ |
3. 打印设置编辑
3.1 工具栏打印按钮
1)点击模板>模板 Web 属性和服务器配置中分页预览设置、填报页面设置、数据分析设置中,打印按钮,如下图所示:
注1:老的打印,显示为“打印(兼容)”。
注2:版本升级后,老的打印按钮无法添加到工具栏上进行使用,若想使用老的打印方法,可以通过在工具栏中添加自定义按钮调用接口的方法实现。接口详情可参考:JS 调用 FR 打印方法
打印按钮没有出现,需要手动添加,选择服务器>服务器配置,编辑工具栏,将新的打印按钮,拖动到工具栏上进行添加,如下所示:
或者直接点击使用默认工具栏,工具栏就会出现新的打印按钮。
3.2 设计器打印设置
1)服务器配置
选择服务器>服务器配置>打印设置,分为两种打印方式:零客户端打印、本地软件打印(默认为“零客户端打印”)。
下面看一下服务器中本地软件打印的特殊的配置项,其他的配置项下面的模板配置里会讲解,如下图所示:
a. 软件下载地址
勾选时,打印软件的下载地址为为默认地址(FR 提供的下载地址);
不勾选时,可以自定义下载地址,当客户使用的是内网时,可以设置内网地址来下载,如下图所示:
b. 打印软件端口号
可以自定义打印软件的端口号。
2)模板配置
选择模板>打印设置,进行打印设置,可以直接“采用服务器设置”,也可以“为该模板单独设置”,如下图所示:
3)零客户端打印
a. 打印时可设置打印边距
勾选时,弹框对打印边距进行设置;
不勾选时,直接使用下面 c 默认设置中的打印边距。
b. IE 浏览器中不显示打印设置
勾选时,IE 浏览器使用静默打印功能;
不勾选时,IE 浏览器中显示打印设置。
c. 针式打印优化
勾选时,打印时,将文字字体替换为黑体以优化打印效果;
不勾选时,打印实际的文字字体。
d. 默认配置:
勾选时,继承页面边距设置;
不勾选时,自定义设置上下左右的边距。
4)本地打印
注:本地打印需要终端下载客户端。
a. 打印时需要打印设置窗口
勾选时,弹框对打印属性进行设置;
不勾选时,继承模板中的纸张、布局和边距设置,可在设计器中提前设置好要打印的样式,用户直接使用统一设置,不再弹出设置窗口,实现静默打印。
b. 打印时需要指定 sheet
默认不勾选;勾选后,打印时,点击打印按钮弹出如下弹窗,默认选中所有 sheet,如下图所示:
注:分页预览不支持。
c. 默认配置:
打印机:支持报表绑定打印机,自动获取本地可用的打印机,无可用打印机时,显示为空。
份数:打印的份数,默认为 1 份。
页码:默认打印所有页,勾选“指定页”时,在后面文本框中输入符合格式要求的数值;勾选“双面打印”,可以设置打印奇数页或者打印偶数页。
纸张:勾选时,继承页面纸张设置;不勾选时,在下拉框中设置需要打印的纸张大小。
布局:勾选时,继承页面布局设置;不勾选时,自定义设置页面是纵向还是横向打印,默认为纵向。
边距:勾选时,继承页面边距设置;不勾选时,自定义设置页面的上下左右边距。
缩放:勾选时,根据纸张大小缩放打印;不勾选时,自定义缩放的比例。
3.3 打印权限
2020-04-26 版本的 JAR 包优化了打印的鉴权机制,打印权限受 模板认证 权限控制。
3.3.1 适用范围
新打印鉴权机制同时适用于本地打印、零客户端打印和兼容的几个打印方式( PDF 打印、Flash 打印 ),服务器端打印不受限制。(因为服务器端打印本质是由服务器来打印)
注:跨域情况下打印,模板认证控制打印权限功能需要做单点登录,否则无法支持模版认证。
3.3.2 机制介绍
1)模板认证关闭
任何用户可打印任何模板。
2)模板认证开启,但模板未设置需要认证
任何用户可打印任何模板。
3)模板认证开启:仅检验账号密码
任何登录用户可以打印任何模板。
未登录用户无法打印任何模板,打印时右上角提示:请登录后进行打印
4)模板认证开启:角色权限认证
登录用户可以打印相应有权限的模板。
打印无权限模板时,右上角提示:此用户无权限打印该模板
未登录用户打印时,右上角提示:请登录后进行打印
5)模板认证开启:数字签名认证
通过数字签名认证的用户可以打印相应有权限的模板。
未通过数字签名认证的用户打印时,右上角提示:此用户无权限打印该模板
3.3.3 通知提示
当打印无权限模板时,右上角会有提示信息:此用户无权限打印该模板,如下图所示:
4. 注意事项编辑
4.1 注意事项一
描述:升级至 2020-04-26 之后的 JAR 包,打印软件不生效。
解决方案:升级打印软件 FinePrint 至 V5 版本即可。
4.1 注意事项二
描述:若选择本地打印时,本地打印软件启动失败,如下图所示:
解决方案:点击 下载安装,下载并启动本地打印软件。
注 1:本地打印不要安装在设计器的安装目录下。
注 2:若安装好本地打印软件,启动失败的话,请检查 9092 端口是否被占用。
注3:若机器性能较差,会导致首次启动消耗时间较长。出现以上报错时请耐心等待,或稍后再次尝试打印即可。
4.2 注意事项三
描述:目前浏览器打印预览不兼容 IE10 及以下版本,不兼容时打印预览右侧 iframe 进行提示,如下图所示:
注:IE11 有些小版本可能不兼容,更换浏览器即可。
解决方案:在 IE 浏览器下进行打印时,需要启用管理加载项中的 PDF Reader 控件,否则提示“安装”警告或打印出来的文件名默认 ReportSerber,如下图所示:
4.3 注意事项四
描述:Tomcat 上调用 FR 工程的本地打印,如果 Tomcat 上无 FR 工程,下面这个请求报错 404,且该问题在 Finereport 10.0 和 Finereport 9.0中都会出现。具体情况如下图所示:
http://localhost:8080/WebReport/ReportServer?op=resource&resource=/com/fr/web/core/js/socket.io.js
原因:执行 FineReport.js 的时候,会尝试从本服务器上加载资源,而调用者的服务器上,没有报表工程,加载不到资源,所以报错。
解决方案:在跨域调用新打印时,需要额外引入两个js,分别是 socket.io.js 和 jquery.watermark.js (引入位置在 FineReport.js 后面),示例代码如下所示:
<script type="text/javascript"
src="http://localhost:8075/WebReport/ReportServer?op=resource&resource=/com/fr/web/core/js/socket.io.js"></script>
<script type="text/javascript"
src="http://localhost:8075/WebReport/ReportServer?op=resource&resource=/com/fr/web/core/js/jquery.watermark.js"></script>
注:Tomcat 下不能有报表工程。