Reporting Services ed esportazione in pdf

mercoledì 05 maggio 2010 - 14.40

volperubbia Profilo | Senior Member

Ciao a tutti,
per esportare via vb un report di rs in pdf, nella mia applicazione ASP.NET 2.0
uso il seguente codice

Dim objRS As ReportExecutionService = Nothing
objRS = New TLReports.ReportExecution.ReportExecutionService
objRS.Url = ...
objRS.Credentials = ...
execInfo = objRS.LoadReport(..., HistoryID)
objRS.SetExecutionParameters(rptParameters, System.Threading.Thread.CurrentThread.CurrentCulture.Name)
data = objRS.Render(.........)
fs = New System.IO.FileStream(...)
writer = New System.IO.BinaryWriter(fs)
writer.Write(data, 0, data.Length)
writer.Close() : fs.Close()
Response.ContentType = ContentType
Response.WriteFile(fs.Name)
Response.Flush()
Response.Close()

Fin qui tutto ok.
Vorrei tuttavia migliorare i seguenti aspetti.

Ho notato che, quando rs è installato in inglese su un server anch'esso in inglese,
l'esportazione mi fa il report in inglese, anche se la lingua corrente è in italiano.
Se invece richiamo lo stesso report da una pagina aspx attraverso il report viewer,
tutto bene, il report risulta formattato secondo le impostazioni della lingua del
thread corrente. Direi che quindi il problema non sta nell'rdl, ma nel codice che uso
per l'esport.

Un'altra cosa che vorrei ottenere è questa: sparare il pdf direttamente sul client
e non salvarlo sul server (cosa che avviene con FileStream ...). E' possibile?
Ad esempio con Crystal Report uso
objReport.ExportToHttpResponse(objReport.ExportOptions.ExportFormatType, Response, False, "Report")

Su reporting servcices c'è qualcosa di analogo?

Grazie per l'attenzione,
Davide

freeteo Profilo | Guru

>Ho notato che, quando rs è installato in inglese su un server
>anch'esso in inglese,
>l'esportazione mi fa il report in inglese, anche se la lingua
>corrente è in italiano.
nel tuo codice, prova ad impostare:
CultureInfo ita = new CultureInfo("it-IT"); Thread.CurrentThread.CurrentCulture = ita; Thread.CurrentThread.CurrentUICulture = ita;



>Un'altra cosa che vorrei ottenere è questa: sparare il pdf direttamente
>sul client
>e non salvarlo sul server (cosa che avviene con FileStream ...).
>E' possibile?
sì, devi però usare un MemoryStream al posto del FileStream in modo che sia renderizzato in pdf direttamente come array di byte in memoria.
Un codice di questo tipo:
MemoryStream ms = new MemoryStream(); ... ...al posto del filestream usi memorystream... ... byte[] bytes = ms.ToArray(); Response.ContentType = "application/octet-stream"; Response.OutputStream.Write(bytes, 0, bytes.Length);

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

volperubbia Profilo | Senior Member

Ciao Matteo,
per il MemoryStream, tutto ok, va alla grande.
Per la lingua ancora nulla invece. Esce sempre in inglese, e comunque
le impostazioni della lingua le avevo già settate nell'Application_BeginRequest.

Se risolvo ti dico
Davide

marcomorgia Profilo | Newbie

Ma sulla macchina che stampa i report c'è anche il redistributable package con la patch ita ???

Perchè io all'inizio avevo installato solo il redistributable package di crystal report e se utilizzavo particolari funzioni del crystal ( tipo pagina N di M ) mi sono accorto che me le stampava in inglese.

Una volta installata la patch ita le stampava correttamente in italiano
----------------------------------------------------
Morgia Marco
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5