Ok, finalmente capito.
controllare questo link: Printing Reporting Services 2005 Reports
Questo post sul blog ha quasi tutto quello che mi serviva, ma ho intenzione di inviare la risposta completa per i riferimenti.
Ho finito per utilizzare l'oggetto visualizzatore di report dietro le quinte, ma solo per comodità, poiché non è richiesto.
Il primo passo sta chiedendo all'utente le impostazioni della stampante:
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
Avere che, si procede a configurare il nostro appello rapporto: modifica di questa stringa, si può arrivare a stampare su qualsiasi formato e qualsiasi orientamento (commutazione dell'altezza e della larghezza per il paesaggio), ma il report stesso deve essere configurato nello stesso layout di pagina.
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 = ""
Infine, rendiamo il rapporto con tutte le sue pagine.
Si noti che se il report ha solo una pagina, il metodo renderStream non viene mai utilizzato.
rpt_control è il controllo del visualizzatore di report, precedentemente configurato e mirato a un report del server.
Si noti inoltre che in questo codice si aggiungono pagine a un elenco. Questa lista è una variabile globale, poiché è necessaria nel metodo 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()
Fino ad ora, non abbiamo fatto qualsiasi stampa a tutti, questo è in realtà gestita dal metodo PrintPageHandler che abbiamo citato in precedenza.
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
Il codice qui mi ha aiutato a uscire da un solco nel tentativo di impostare la stampa in batch da SSRS. Quindi complimenti a te. Sì, so che è passato del tempo da quando hai postato questo! –