2022最终版FastReport浏览器直接打印无须预览,之所以写这篇文章,是因为在两年前首发在 jhrs.com 的FastReport.net 打印功能这篇文章被很多网站转(偷)载,也是为了填一下2次封装FastReport.net 打印功能,Web项目网页支持直接打印这篇文章留下的坑,本文将会给出详细的代码以实现浏览器上并结合FastReport.Net实现无须预览直接打印功能。
无须预览直接打印也叫静默打印,即点一下按钮(当然你可以任意方式实现让打印机开始)打印机直接开始工作打印文件;在WinForm下很好实现,而web 静默打印一直是难点,且实现较为麻烦,这也是本文要解决的问题。
以下的文章是2年前和后来写的关于FastReport.Net的一些系列文章,原文还是值得翻出来看一下的,讲的是一些实现思路。本文会略过VS2022怎样打包安装程序,如果你是C#开发人员,会开发WinForm程序但不熟悉怎样打包安装程序,可以看看我之前写的WPF程序打包教程,它们是一个路数。
源码解决方案说明
当你从github下载源码后,使用VS2022打开会看到如下的样式,如果你首次打开时JHRS.PrintClientSetup不能正常加载,说明你没有安装Installer Projects,参见VS2022 打不开vdproj项目解决办法,升级Installer Projects这篇文章解决即可。
源码中提供了 2 个网站程序,分别是使用asp.net webform技术编写和asp.net core razor page编写,从命名上就已经区分了;JHRS.PrintClient是基于FastReport.net封装的客户端软件,引用了FastReport.net相关dll文件。
JHRS.PrintClientSetup是打包安装程序,为什么需要打包安装呢?那是因为在生产环境中你不可能将Debug或Release目录下的文件发给客户让他们使用,况且也使用不起来,而且还需要借助该打包程序往注册表写入自定义协议信息,具体在下面代码中会介绍。打包成安装程序后,即可在生产环境中的网页上提供下载功能,需要使用打印功能的客户端,只需要下载安装上该客户端即可,之后就可以打印了。
Github地址:Github源码地址
演示网站:跨浏览器直接打印功能示例
FastReport浏览器直接打印无须预览
我们在使用web技术开发管理系统,如医疗领域的HIS系统,企业的ERP系统,财务系统等等,都有打印需求,而正是各类系统和客户都有着各种不相同的打印需要,模板,格式,数据不一样等;市面上报表有多种产品,但我们选择了FastReport.Net做为解决打印需求的第三方组件,当然,商用它是付费的,不过对于公司来说,这都没有什么问题。
本文中所涉及到的FastReport.Net是使用的来自网上的古老的 2.0 版本,正式产品中使用,还是需要购买授权的。接下来就来说说怎样在web环境下结合FastReport.net 实现无预览直接打印功能,另外需要说明的是,我封装的客户端你可以自由的设置是否需要使用预览功能,客户端的功能点如下:
- 支持选择多打印机,并且可以设置默认打印机
- 支持无须预览直接打印,也可以启动客户端将预览功能开启。
- 跨浏览器支持,Chrome,IE,FireFox,Edge全都支持。
- 打印日志功能(保存在安装目录)
- 桌面快捷方式(一般无须打开,只有更改设置时才使用,如更换默认打印机,设置静默打印【无预览】)
要实现FastReport浏览器静默打印功能,我们需要做两步工作:
第一步是编写客户端程序,并且提供下载功能,用户首次使用时先安装客户端,首次点击打印会在浏览器上看到如下提示:
web 静默打印首次提示
第二步是web应用程序界面上提供打印功能和获取打印数据接口,具体的实现会在源码中展示。
这里只转了部分内容,完整内容请看原文。