本文档描述了在 ASP.NET 环境中在客户端打印报表的特殊事项。
在 Web 应用程序 (或 Web 项目) 中,使用 ReportViewer 控件来显示报表。 它把报表导出为 HTML,并且嵌入输出到网页中。 此控件的客户端实例是由 ASPxClientReportViewer 类来表示的。 同时,为了在客户端打印报表,要调用 ASPxClientReportViewer.Print 方法。
有两种方式调用此方法:
-
由最终用户调用,使用 ReportToolbar 控件: 单击其 打印 按钮 (打印整个报表)…
… 或者,单击 打印页面 按钮 (只打印当前报表页面);
-
不使用 ReportToolbar,而是以程序方式调用 (例如,在 ASPxButton 控件的 ReportToolbarButton.OnClientClick 事件中)。 在 如何: 打印或导出报表,而不使用 ReportToolbar 控件 主题中详细描述了这种方法。
在这种情况下,可能需要把相应的按钮从 ReportViewer 中删除。 相关指南,请参阅 如何: 定制 Web 报表工具栏。
在调用此方法之后,ReportViewer 控件在服务器上重建报表 (或者当使用了报表缓存时,从报表缓存中恢复),然后,取决于 ReportViewer.PrintUsingAdobePlugIn 属性的取值,在网页上呈现之后,以下列两种方式之一打印报表:
- 使用 Web 浏览器的打印功能;
- 使用 Adobe® Reader 插件。
因为 Web 浏览器使用自身的打印设置 (例如纸张类型、边距等),而这些设置可能不同于报表自身的设置,因此最终用户必须要在每次打印操作之前重新调整页面设置。 同时,ReportViewer 一次只显示一个报表页面。 因此,如果试图使用 Web 浏览器的打印功能来打印报表时,只有当前报表页面的整个网页被打印。 另外,当把报表导出为 HTML 时,某些报表内容可能会丢失 (例如交叉的控件),因此打印输出结果可能与 Windows 窗体应用程序相同报表的打印输出不同。
这样会导致客户端打印产生问题,并且可以使用安装了 Adobe® Reader 插件的 Internet Explorer® 来避免那些问题: 当报表被打印时,XtraReports 搜索此插件,如果找到,则首先 导出 报表为 PDF,然后打印所创建的文件。 这样,所有的打印设置都能被正确地从报表传递到 打印 对话框。
如果没有安装 Adobe Reader 浏览器插件,那么使用默认的浏览器打印,并且需要您人工定义所有打印设置,从而正确地打印报表。
要下载和安装 Adobe® Acrobat Reader,则使用下列链接: http://www.adobe.com/go/EN_US-H-GET-READER。
如果在机器上已经安装 Adobe® Acrobat Reader,那么就不需要下载和安装任何额外的插件。 在 Internet Explorer 中启用此插件,从而加载 Adobe® Acrobat Reader。 然后,在它的 Edit(编辑) 菜单中,单击 Preferences(使用偏好) 项。 在被调用的 Preferences 对话框中,在 Internet 类别中勾选 Display PDF in browser(在浏览器中显示 PDF) 项。
可能需要关闭并重新打开 Microsoft® Internet Explorer 来应用这些更改。
然后,在调用 ASPxClientReportViewer.Print 方法之后,下面的 打印 对话框被显示。