Mi riferisco al titolo di un Post in inglese che suona così: "Save RDLC reports as PDF programmatically" e che dovrebbe risolvere esattamente il mio problema, ossia stamparmi in PDF alcuni Report.rdlc che sono faticosamente riuscito a creare dentro alla mia Solution. Non so se posso postare il Link, trattandosi di altro Forum, ma il Codice è questo:
codice:We defined a control called rptViewer1 which can be visible or not depending of your needs. strFormat should contain "PDF" and strNomFicher the full path. BTW the variable names and functions are in french, but that will work anyway :) Public Sub CreerFichierRapport(ByVal strNomFichier As String, ByVal strFormat As String) Dim bytes() As Byte Dim strDeviceInfo As String = "" Dim strMimeType As String = "" Dim strEncoding As String = "" Dim strExtension As String = "" Dim strStreams() As String Dim warnings() As Warning Dim oFileStream As FileStream _stream = New List(Of Stream) Try bytes = rptViewer1.LocalReport.Render(strFormat, strDeviceInfo, strMimeType, strEncoding, strExtension, strStreams, warnings) oFileStream = New FileStream(strNomFichier, FileMode.Create) oFileStream.Write(bytes, 0, bytes.Length) _stream.Add(oFileStream) Finally If Not IsNothing(oFileStream) Then oFileStream.Close() oFileStream.Dispose() End If End Try End Sub
Non sono riuscito ad utilizzarlo per dalmeno due motivi.
1 - la stringa di codice "_stream = New List(Of Stream)" è corretto che sia su una singola riga oppure è la continuazione della riga precedente?
2 - cosa vuol dire: "Abbiamo definito un controllo chiamato rptViewer1 che può essere ....."?
Ammesso che la stringa di codice al punto 1 si possa risolvere con qualche prova, non ho assolutamente capito come "definire un controllo chiamato rptViewer"
C'è anche una seconda versione ma anche questa presenta lo stesso problema di definizione del controllo:
codice:Imports Microsoft.Reporting.WebForms Imports System.IO Public Class RenderToPDF Public Sub Save(ByVal viewer As ReportViewer, ByVal savePath As String) Dim Bytes() As Byte = viewer.LocalReport.Render("PDF", "", Nothing, Nothing, Nothing, Nothing, Nothing) Using Stream As New FileStream(savePath, FileMode.Create) Stream.Write(Bytes, 0, Bytes.Length) End Using End Sub End Class
Qualcuno sa come si fa a definire questo benedetto controllo?
So che non c'è molto in giro a proposito dei Report di Visual Studio e credo che questo piccolo codice potrebbe risolvere molti problemi. Mi auguro che qualcuno possa aiutarmi a farlo funzionare.
Per parte mia sono disponibile a dare tutte le informazioni che sono riuscito a trovare per importare un Report di Access in un progetto VB .Net. E funziona benissimo. Se a qualcuno serve me lo chieda nella risposta.

Rispondi quotando