Ok, enfin compris.
vérifier ce lien: Printing Reporting Services 2005 Reports
Ce billet de blog a presque tout ce que je avais besoin, mais je vais poster la réponse complète ici des références. J'ai fini par utiliser l'objet visualiseur de rapport dans les coulisses, mais seulement pour plus de commodité, car ce n'est pas nécessaire.
La première étape demande à l'utilisateur les paramètres de l'imprimante:
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
Ayant, nous procédons à configurer notre appel de rapport: La modification de cette chaîne, vous pouvez obtenir d'imprimer sur tout format de papier et tout orientation (changer la hauteur et la largeur pour le paysage), mais le rapport lui-même doit être configuré dans la même mise en page.
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 = ""
Enfin, nous rendons le rapport avec toutes ses pages.
Notez que si le rapport n'a qu'une seule page, la méthode renderStream n'est jamais utilisée. Rpt_control est le contrôle du visualiseur de rapports, précédemment configuré et visant un rapport de serveur. Notez que dans ce code, nous ajoutons des pages à une liste.
Cette liste est une variable globale, car elle est nécessaire dans la méthode 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()
Jusqu'à présent, nous n'avons pas fait l'impression du tout, cela est en fait manipulé par la méthode PrintPageHandler que nous dit plus tôt.
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
Le code ici m'a aidé à sortir d'une ornière que j'étais dans essayer d'établir une impression en lots de SSRS. Alors bravo à toi. Oui, je sais que le temps s'est écoulé depuis que vous avez posté ceci! –