1. Add a form PrintReport.vb
2. Add a report viewer in the form. configure the report viewer property (server url, path)
3. code behind:
Imports System.Drawing.Printing
Imports System.Drawing.Imaging
Imports System.IO
Imports Microsoft.Reporting.WinForms
Public Class PrintReport
Dim pages As New List(Of Metafile)
Dim pageIndex As Integer = 0
Dim doc As New Printing.PrintDocument()
Private Sub PrintReport_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
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 = 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 Microsoft.Reporting.WinForms.Warning ‘Warning
Dim streamids() As String
Dim mimeType, encoding, filenameExtension, path As String
mimeType = “” : encoding = “” : filenameExtension = “”
‘Report Parameter Input. Add form text box as per your requirements
Dim SALES_ORDER_NUMBER As String
Dim INVOICE_NUMBER As String
SALES_ORDER_NUMBER = CRMInvoicing.txtSALES_ORDER_NUMBER.Text
INVOICE_NUMBER = CRMInvoicing.txtINVOICE_NUMBER.Text
Dim parmSO As New ReportParameter(“SALES_ORDER_NUMBER”, SALES_ORDER_NUMBER)
Dim parmI As New ReportParameter(“INVOICE_NUMBER”, INVOICE_NUMBER)
Dim parmSO1(1) As ReportParameter
parmSO1(0) = parmSO
parmSO1(1) = parmI
Dim data() As Byte
rpt_control.ServerReport.SetParameters(parmSO1)
data = rpt_control.ServerReport.Render(“Image”, deviceInfo, mimeType, encoding, filenameExtension, streamids, warnings)
pages.Add(New Metafile(New MemoryStream(data)))
For Each pageName As String In streamids
data = rpt_control.ServerReport.RenderStream(“Image”, pageName, deviceInfo, mimeType, encoding)
pages.Add(New Metafile(New MemoryStream(data)))
Next
doc.Print()
Me.rpt_control.RefreshReport()
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.Graphics.DrawImage(page, 0, 0, page.Width, page.Height)
e.HasMorePages = pageIndex < pages.Count
End Sub
End Class