启用和禁用 Reporting Services 的客户端打印
报表查看器工具栏上的打印按钮使用可移植文档格式 (PDF) 以实现客户端打印在浏览器中查看的 Reporting Services 报表。 新的远程打印体验使用 Reporting Services附带的 PDF 呈现扩展插件,以便以 PDF 格式呈现报表。 你可以下载 PDF 格式的报表。 或者,如果你已安装用于查看 PDF 文件的应用程序,则打印按钮将显示页面常见配置项目的打印对话框。 其中包括页面大小、方向和 PDF 文件的预览等配置项目。 虽然默认情况下将启用客户端打印功能,但是您也可以将其禁用,以禁止使用该功能。
以前版本的 Reporting Services 使用 ActiveX 控件,该控件需要从报表服务器下载到客户端计算机上。 如果将报表服务器升级到 SQL Server 2016 或更高版本,则打印控件不会从报表服务器或客户端计算机上删除。
打印体验
选择报表查看器工具栏上的打印按钮时,体验根据客户端计算机上安装的 PDF 查看应用程序以及使用的浏览器而有所不同。 你可以下载 PDF 文件或从对话框中配置打印选项,或者采用两种方法,具体取决于客户端计算机。
交互 | 用户界面 |
---|---|
对于所有浏览器而言,第一个对话框都一样,你可以更改基本布局属性,例如方向。 选择“打印”时,体验会略有不同,具体取决于所使用的浏览器。 | |
在 Chrome 中,将打开详细的浏览器打印屏幕。 你可以更改打印配置、打印和打开操作系统打印对话框。 | |
如果安装了 PDF 阅读器应用程序,打印按钮将打开 PDF 文件的预览窗口,以便执行保存或打印功能。 | |
如果没有安装 PDF 阅读器应用程序,有两种用户体验︰ 报表自动呈现,并使用浏览器下载进程来下载 PDF 文件。 注意︰ 报表越复杂,则从选择“打印”到看到浏览器下载通知的延时越长。 你也可以通过选择“单击此处查看报表的 PDF”再次强制下载。 选择“单击此处查看报表的 PDF”强制下载 PDF。 |
客户端打印故障排除
如果报表查看器工具栏上的打印按钮被禁用,请检查以下语句:
在 Management Studio中禁用了报表服务器的客户端打印功能。 请参阅本文中的启用与禁用客户端打印部分。
SQL Server 2016 (13.x) Reporting Services 或更高版本 (SSRS) PDF 呈现扩展插件被禁用。 查看
<Extension Name="PDF"
文件的rsreportserver.config
部分。你正在可比性模式下查看,该模式使用旧的 SQL Server 2016 (13.x) Reporting Services 或更高版本的 (SSRS) HTML4 呈现引擎。 PDF 打印体验需要 HTML 5 呈现引擎。 选择工具栏上的“尝试预览”。
启用与禁用客户端打印
报表服务器管理员可以通过将报表服务器系统属性 EnableClientPrinting
设置为 False,以禁用远程打印功能。 此设置将对该服务器管理的所有报表禁用客户端打印功能。 EnableClientPrinting
默认设置为 True。 您可以通过下列方式禁用客户端打印功能:
对于本机模式下的报表服务器:
使用管理权限启动 Management Studio 。
连接到 Management Studio中的报表服务器实例。
右键单击报表服务器节点,然后选择“属性”。 如果“属性”选项被禁用,请确认你是在使用管理权限启动 Management Studio。
选择“高级”。
选择 EnableClientPrinting中禁用了报表服务器的客户端打印功能。
设置为 True 或 False,然后选择“确定”。
对于 SharePoint 模式报表服务器 :
在 SharePoint 管理中心中,选择“应用程序管理”。
单击“管理服务应用程序”。
选择你的 Reporting Services 服务应用程序的名称,然后选择 SharePoint 功能区中的“管理”。
选择系统设置。
选择 “启用客户端打印” 。 “启用客户端打印” 选项位于页面的底部附近。
选择“确定”。
编写脚本或代码,将报表服务器系统属性
EnableClientPrinting
设置为 False。
下面的示例脚本说明了一种禁用客户端打印功能的方法。 编译并运行以下 Microsoft Visual Basic 代码,将 EnableClientPrinting 属性设置为 False。 在运行代码后,请重新启动 IIS。
示例脚本
Imports System
Imports System.Web.Services.Protocols
Class Sample
Public Shared Sub Main()
Dim rs As New ReportingService()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim props(0) As [Property]
Dim setProp As New [Property]
setProp.Name = "EnableClientPrinting"
setProp.Value = "False"
props(0) = setProp
Try
rs.SetSystemProperties(props)
Catch ex As System.Web.Services.Protocols.SoapException
Console.Write(ex.Detail.InnerXml)
Catch e as Exception
Console.Write(e.Message)
End Try
End Sub 'Main
End Class 'Sample