Ok, schließlich herausgefunden.
Check this link: Printing Reporting Services 2005 Reports
Die Blog-Post fast alles hat, was ich brauchte, aber ich werde die vollständige Antwort hier nach Referenzen veröffentlichen.
Ich landete mit dem Report Viewer-Objekt im Hintergrund, aber nur aus Bequemlichkeit, da es nicht erforderlich ist.
Der erste Schritt ist der Benutzer für die Druckereinstellungen zu fragen:
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
dass Having, gehen wir unseren Bericht Aufruf konfigurieren: ändern Sie diese Zeichenfolge, können Sie sich auf jedes Papierformat drucken und jedem Ausrichtung (Höhe und Breite für Querformat wechseln), aber der Bericht selbst muss im selben Seitenlayout konfiguriert werden.
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 = ""
Schließlich rendern wir den Bericht mit all seinen Seiten.
Beachten Sie, dass die RenderStream-Methode nie verwendet wird, wenn der Bericht nur eine Seite enthält.
rpt_control ist das Report Viewer-Steuerelement, das zuvor konfiguriert wurde und auf einen Serverbericht abzielt.
Beachten Sie, dass wir in diesem Code Seiten zu einer Liste hinzufügen. Diese Liste ist eine globale Variable, da sie in der PrintPageHandler-Methode benötigt wird.
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()
Bisher haben wir kein Drucküberhaupt gemacht wird dies tatsächlich von der PrintPageHandler Methode behandelt, die wir früher verwiesen.
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
Der Code hier half mir, aus einer Spur heraus zu kommen, in der ich versuchte, etwas Stapeldruck von SSRS zu setzen. Also ein großes Lob an dich. Ja, ich weiß, es ist etwas Zeit vergangen, seit du das geschrieben hast! –