本帖最后由 Lenka.Guo 于 2022-2-17 09:17 编辑
示例下载:https://github.com/activereports/WebSamples16/tree/main/JsViewerSamples/SilentPrint
示例组成: 该示例里面包含了:JSViewerBatchPrint_MVC_Core, JSViewerSilentPrint_MVC_Core, PrintAgent., JSViewerBatchPrint_MVC_Core 演示了批量打印报表。
实现思路: 静默打印主要是通过在客户端安装打印代理而实现的静默打印功能。ActiveReports 实现静默打印服务,基于葡萄城的另一个产品 GrapeCity Documents to PDF 用于监控客户端生成PDF 时,进行打印。如果大家需要静默打印的方法,可以采用类似思路去监控PDF 生成,当然也可以使用 葡萄城GrapeCity Documents 产品,未授权的GC Documents可以一次打印5个文档因此是有限制的哦。
运行环境:
- Visual Studio 2022 V17.0 及以后的版本
- .Net 6.0 SDK
- .Net Core 托管包
编译项目:
1. 打开 Visual Stduio 选择“文件”->"打开"->"项目或解决方案"
2. 选择示例文件,打开.sln文件
3. 右击选择项目,选择还原 Nuget 包
4. 编译运行。
在运行静默打印示例前,需要先运行打印代理项目:
运行打印代理项目:
PrintAgent 是Windows Service 的打印代理服务,运行的是 ASP.NET Core API 项目打印PDF 文件。是基于 GrapeCity.Documents.Pdf 库实现的打印代理。此库的未购买授权许可时,可一次性打印加载限制5 页。
设置:
appsetting.json 文件:可配置打印机名称和授权端口。默认的打印机名称是Microsoft Print to PDF,在这种情况下,为了避免提示输入文件名,打印代理将输出 pdf 保存在一个特殊的系统目录中,该目录包含所有用户共有的文档。默认情况下,服务端口为:http://localhost:5000.PDF 打印的地址为: http://localhost:5000/print.
编译PrintAgent:
1. Visual Studio打开 PrintAgent 示例
2. 还原 Nuget包, 编译运行
运行PrintAgent
调试并运行:**Debug → Start Debugging**
运行不调试:**Debug → Start Without Debugging**
使用命令行运行项目:**dotnet run --console**
运行后会在Bin 目录下生成相关的项目,这个所有内容都是启动静默打印服务的必备内容,需要把这些内容拷贝到下面示例的binPath对应的文件夹中:
安装Windows 服务
1. 编译PrintAgent
2. 复制该项目的输出文件夹到指定文件夹如 **C:\PrintAgent**,输出文件将被放置在默认的路径下,通常是在 bin/<configuration>/<target>。
3. 启动命令行窗口,并输入:sc create PrintAgent binPath=C:\PrintAgent\PrintAgent.exe start=auto
注意,如果在执行命令行时提示以下错误:
[SC] OpenSCManager FAILED 5:
Access is denied.
解决方法:
问题是权限不足,找到注册表
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA 的值改为0 把这个值改成0即可。
4. 启动服务,运行命令:sc start PrintAgent
效果展示:注意: PrintAgent 默认是调用的Microsoft Pirnt to PDF 打印机,这个打印机会将打印成功的文档放到路径:C:\Users\Public\Documents
大家可以根据自己的需要修改默认打印机为真实的打印机。
|