我需要的是从应用程序的一种形式提供一键式打印按钮,仅触发打印对话框,而不会打开ReportViewer.
我一直在尝试将报表呈现到一个字节数组,但是我无法得到这样的结果.
该报告有多个页面,所以我不知道“Image”渲染是否适用于本地报告,它也将用于服务器报告.
我一直在扔MSDN,但只有参考本地报告:
http://msdn.microsoft.com/en-us/library/ms252091(VS.80).aspx
而我可以在服务器端报告中得到的一些信息是使用对reportserver Web服务的Web引用,我不希望这样.
解决方法
检查此链接:
Printing Reporting Services 2005 Reports
那个博客文章几乎有我需要的一切,但是我将在这里发表完整的答案以供参考.
我最终在幕后使用报表查看器对象,但仅为方便起见,因为它不是必需的.
第一步是要求用户打印机设置:
Dim doc As New Printing.PrintDocument() AddHandler doc.PrintPage,AddressOf PrintPageHandler Dim dialog As New PrintDialog() dialog.Document = doc Dim print As DialogResult print = dialog.ShowDialog() doc.PrinterSettings = dialog.PrinterSettings
这样,我们继续配置我们的报告电话:
修改此字符串后,您可以在任何纸张尺寸和任何方向(切换高度和宽度)进行打印,但报表本身必须在相同的页面布局中进行配置.
Dim deviceInfo As String = _ "<DeviceInfo>" + _ "<OutputFormat>emf</OutputFormat>" + _ " <PageWidth>8.5in</PageWidth>" + _ " <PageHeight>11in</PageHeight>" + _ " <MarginTop>0.25in</MarginTop>" + _ " <MarginLeft>0.25in</MarginLeft>" + _ " <MarginRight>0.25in</MarginRight>" + _ " <MarginBottom>0.25in</MarginBottom>" + _ "</DeviceInfo>" Dim warnings() As Warning Dim streamids() As String Dim mimeType,encoding,filenameExtension,path As String mimeType = "" : encoding = "" : filenameExtension = ""
最后,我们将报告与其所有页面一起呈现.
请注意,如果报表只有一页,则不会使用renderStream方法.
rpt_control是以前配置并针对服务器报告的报表查看器控件.
请注意,在本代码中,我们将页面添加到列表.该列表是一个全局变量,因为它需要在PrintPageHandler方法中.
Dim data() As Byte rpt_control.ServerReport.SetParameters(_parametros) data = rpt_control.ServerReport.Render("Image",deviceInfo,mimeType,streamids,warnings) pages.Add(New Metafile(New MemoryStream(data))) For Each pageName As String In streamids data = rpt_control.ServerReport.RenderStream("Image",pageName,encoding) pages.Add(New Metafile(New MemoryStream(data))) Next doc.Print()
到目前为止,我们根本没有完成任何打印,这实际上是由我们前面引用的PrintPageHandler方法处理的.
Dim pages As New List(Of Metafile) Dim pageIndex As Integer = 0 Private Sub PrintPageHandler(ByVal sender As Object,ByVal e As PrintPageEventArgs) Dim page As Metafile = pages(pageIndex) pageIndex += 1 e.Graphics.DrawImage(page,page.Width,page.Height) e.HasMorePages = pageIndex < pages.Count End Sub
原文地址:https://www.jb51.cc/mssql/75403.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。