Report in pdf

lunedì 13 novembre 2006 - 11.54

memmo77 Profilo | Expert

Salve. La mia situazione è questa:
ho una pagina aspx, dentro questa pagina ho un CrystalReportViewer che apre un determinato report. Sotto a questo ho un controllo FCKeditor per inserire dei commenti al report.
Ora, so che il controllo FCKeditor salva in formato html, a me servirebbe salvare l'intera pagina in un file pdf che mi faccia vedere sia il report e alla fine il commento che ho scritto con FCKeditor.
Avete qualche strada da suggerirmi?
Grazie mille a tutti

freeteo Profilo | Guru

ciao,
non credo sia cosi' facile da fare, per stampare esattamente quello che hai a video devi orientarti sullo stampare la pagina web (quindi come il pulsante stampa di IE) e poi avere una stampante pdf, cosi' sei sicuro che "quello che vedi è quello che stampi".
Ovviamente questo non sara' perseguibile pervche' implica la presenza di qualche stampante PDF sul client.

A questo punto l'unica cosa che ti posso consigliare è sfruttare l'esportazione in pdf di Crystal Report, e usare un campo formula a fine report, che da codice riempi con il testo del FKEditor, sperando che venga renderizzato correttamente da Crystal.
Dico "sperando" perche' l'html che renderizza Crystal interpretando il contenuto di un campo non è proprio corretto, cmq potrebbe bastarti.
Cmq sia allora sul pressione del bottone riempi il campo formula:

string mioCommento = "\"" + FCKEditor.Text + "\""; mioreport.DataDefinition.FormulaFields["miaformula"].Text = mioCommento;

e poi esporti in pdf scegliendo 1o di questi 2 modi, sono equivalenti vedi te se vuoi farlo diretto o se devi salvarlo su file:

mioreport.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response,true, "file.pdf");

e se devi salvarlo su file, poi redirigi su quel file:
mioreport.ExportToDisk(ExportFormatType.PortableDocFormat, MapPath("./file.pdf")); Response.Redirect("./file.pdf");


ovviamente metti a posto la sintassi e crea il campo formula sul report e come proprieta' "paragraph" del campo, imposta di interpretare html
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

memmo77 Profilo | Expert

Allora, mi trovo in questa situazione:

htmlfile = Server.MapPath(Request.ApplicationPath + "/sample.htm")
If File.Exists(Server.MapPath(Request.ApplicationPath + "/sample.pdf")) Then
File.Delete(Server.MapPath(Request.ApplicationPath + "/sample.pdf"))
End If

'QUI RIEMPIO IL PDF CON IL REPORT LETTO DA CrystalReportViewer1
Dim mioreport As New ReportDocument
mioreport.Load(Server.MapPath("mioreport.rpt"))
mioreport.ExportToDisk(ExportFormatType.PortableDocFormat, MapPath("./sample.pdf"))


QUI VORREI AGGIUNGERE AL FILE PDF APPENA CREATO LA PARTE DI CODICE HTML DI COMMENTO MA MI SOSTITUISCE ALLA PRIMA IL COMMENTO, NON AGGIUNGENDOLO.CREDEVO CHE LA FUNZIONE APPEND FACESSE AL CASO MIO
'create a stream object
'Dim outputStream As New System.IO.FileStream(htmlfile.Replace(".htm", ".pdf"), FileMode.CreateNew)
Dim outputStream As New System.IO.FileStream(htmlfile.Replace(".htm", ".pdf"), FileMode.Append)
'open new pdf file
html2pdf.Open(outputStream)
'read web page
html2pdf.Run(New Uri(htmlfile))
'close and finish pdf file.
html2pdf.Close()

SAI COME POSSO FARE?
GRAZIE CIAO

freeteo Profilo | Guru

>'QUI RIEMPIO IL PDF CON IL REPORT LETTO DA CrystalReportViewer1
> Dim mioreport As New ReportDocument
> mioreport.Load(Server.MapPath("mioreport.rpt"))
>mioreport.ExportToDisk(ExportFormatType.PortableDocFormat, MapPath("./sample.pdf"))
io ti dicevo di aggiungere qui il campo formula con il contenuto html che ti torna il FCKeditor, e poi l'eportazione sarebbe stata completa di tutto


>QUI VORREI AGGIUNGERE AL FILE PDF APPENA CREATO LA PARTE DI CODICE
>HTML DI COMMENTO MA MI SOSTITUISCE ALLA PRIMA IL COMMENTO, NON
>AGGIUNGENDOLO.CREDEVO CHE LA FUNZIONE APPEND FACESSE AL CASO
>MIO
>Dim outputStream As New System.IO.FileStream(htmlfile.Replace(".htm",".pdf"), FileMode.Append)
> 'open new pdf file
> html2pdf.Open(outputStream)
> 'read web page
> html2pdf.Run(New Uri(htmlfile))
> 'close and finish pdf file.
> html2pdf.Close()
l'append è "binario" quindi non è probabilmente corretta la struttura del file, dovresti usare 1parser pdf per aprirlo, aggiungere il testo che vuoi e poi risalvarlo, in modo che sia l'oggetto a farti un file corretto strutturalmente.
Html2pdf puo' anche andare bene, ma è come facessi una stampa da IE, quindi solo della pagina corrente del repotr, se questo è fatto da piu' pagine ne vedi cmq una sola.E cmq sia ti rimane il problema dell'accodamento binario del file che non genera un pdf giusto.
Ti consiglio ancora la mia ipotesi, altrimenti dovresti trovare un pdf parser ma finora non ne ho mai usati e non saprei consigliarti...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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