Ok, finalmente descubrió.
verificación de este enlace: Printing Reporting Services 2005 Reports
Esa entrada de blog tiene casi todo lo que necesitaba, pero voy a publicar la respuesta completa aquí por referencias.
Terminé usando el objeto visor de informes detrás de las escenas, pero solo por conveniencia, ya que no es obligatorio.
El primer paso es pedir al usuario para la configuración de la impresora:
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
Tener que, se procede a configurar nuestro llamado informe: La modificación de esta cadena, puede llegar a imprimir en cualquier tamaño de papel y cualquier orientación (cambio de altura y ancho para el paisaje), pero el informe mismo debe configurarse en el mismo diseño de página.
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 = ""
Finalmente, presentamos el informe con todas sus páginas.
Tenga en cuenta que si el informe tiene solo una página, el método renderStream nunca se utiliza.
rpt_control es el control del visor de informes, previamente configurado y con el objetivo de un informe del servidor.
Tenga en cuenta que en este código agregamos páginas a una lista. Esta lista es una variable global, ya que se necesita en el método PrintPageHandler.
Dim data() As Byte
rpt_control.ServerReport.SetParameters(_parametros)
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()
Hasta ahora, no hemos hecho ninguna impresión en absoluto, esto es en realidad controla con el método PrintPageHandler que se hizo referencia anteriormente.
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, 0, 0, page.Width, page.Height)
e.HasMorePages = pageIndex < pages.Count
End Sub
El código aquí me ayudó a salir de la rutina en que estaba tratando de configurar algunos lotes de impresión desde SSRS. Así que felicitaciones para ti. Sí, sé que ha pasado un tiempo desde que publicaste esto. –