Sometimes we don't need print preview. How to allow user print directly to a printer without viewing it first on screen. ReportViewer control is needed on this example, but I don't want to modify the existing UI. So we'll also added ReportViewer runtime and make it hidden. This is report that we want to print: Arrange control as below: Then type this code behind: Imports System.Drawing.Printing Imports System.Drawing.Imaging Imports System.IO Imports Microsoft.Reporting.WinForms Public Class frmPrintReport Dim pages As New List(Of Metafile) Dim pageIndex As Integer = 0 Dim doc As New Printing.PrintDocument() Dim ReportViewer1 As New ReportViewer Private Sub frmPrintReport_Load( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase .Load Button1.Text = "Print" With ReportViewer1 .Visible = False .ProcessingMode = ProcessingMode.Remote .ServerReport.ReportPath = "/HRD/Attendance Report" .ServerReport.ReportServerUrl = New _ Uri( "http://localhost/ReportServer" ) End With Me .Controls.Add(ReportViewer1) End Sub Private Sub PrintPageHandler( ByVal sender As Object, _ ByVal e As PrintPageEventArgs) Dim page As Metafile = pages(pageIndex) pageIndex += 1 Dim pWidth As Integer = 827 Dim pHeight As Integer = 1100 e.Graphics.DrawImage(page, 0, 0, pWidth, pHeight) e.HasMorePages = pageIndex End Sub Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim doc As New Printing.PrintDocument() doc = New Printing.PrintDocument() AddHandler doc.PrintPage, AddressOf PrintPageHandler Dim dialog As New PrintDialog() dialog.Document = doc Dim print As DialogResult print = obrolan.ShowDialog() doc.PrinterSettings = obrolan.PrinterSettings Dim deviceInfo As String = _ " " & _ " emf " & _ " 8.5in " & _ " 11in " & _ " 0.25in " & _ " 0.25in " & _ " 0.25in " & _ " 0.25in " & _ " " Dim warnings() As Microsoft.Reporting.WinForms.Warning Dim streamids() As String Dim mimeType, encoding, filenameExtension, path As String mimeType = "" : encoding = "" : filenameExtension = "" 'Input parameter report Dim DateFrom As Date = CDate ( "4/15/2015" ) Dim DateTo As Date = CDate ( "4/15/2015" ) Dim parmDateFrom As New ReportParameter( "DateFrom" , DateFrom) Dim parmDateTo As New ReportParameter( "DateTo" , DateTo) Dim parmSO1(1) As ReportParameter parmSO1(0) = parmDateFrom parmSO1(1) = parmDateTo Dim data() As Byte ReportViewer1.ServerReport.SetParameters(parmSO1) data = ReportViewer1.ServerReport.Render( "Image" , _ deviceInfo, mimeType, encoding, filenameExtension, _ streamids, warnings) pages.Add( New Metafile( New MemoryStream(data))) For Each pageName As String In streamids data = ReportViewer1.ServerReport.RenderStream( "Image" , _ pageName, deviceInfo, mimeType, encoding) pages.Add(New Metafile(New MemoryStream(data))) Next doc.Print() Me .ReportViewer1.RefreshReport() End Sub End Class Then lets try, I'm using pdf printer to print. Reference: http://blogs.msdn.com/b/bryanke/archive/2004/02/11/71491.aspx https://monirblog.wordpress.com/2012/10/16/print-ssrs-report-directly-to-a-printer-without-viewing-using-vb-net/ Click here if you like this article. Related Article: Installing Business Intelligence SQL Server 2005 Creating Report with SQL Server Reporting (Wizard) Creating Report with SQL Server Reporting (without wizard)
pop
Kamis, 08 Oktober 2020
Langganan:
Posting Komentar (Atom)
EmoticonEmoticon