Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Visualizzare pdf nel broswer
lunedì 12 luglio 2010 - 17.55
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 2.0
|
Javascript
ciccioherz
Profilo
| Junior Member
93
messaggi | Data Invio:
lun 12 lug 2010 - 17:55
ciao, come datitolo,
ho un button nella mia pagina aspx e in seguito al click vorrei vedere la stessa pagina, aperta in una nuova finestra del broswer con il pdf incorporato (un po come fa joomla con l'icona di stampa pdf).
sembra un'impresa impossibile..qualcuno puo aiutarmi?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 13 lug 2010 - 10:08
>ciao, come datitolo,
Ciao
>ho un button nella mia pagina aspx e in seguito al click vorrei
>vedere la stessa pagina, aperta in una nuova finestra del broswer
>con il pdf incorporato (un po come fa joomla con l'icona di stampa pdf).
Non capisco molto quello che ti serve, hai screenshot di esempio?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
ciccioherz
Profilo
| Junior Member
93
messaggi | Data Invio:
mar 13 lug 2010 - 11:23
no..provo a rispegare:
ho una pagina aspx con un button in cui in seguito al suo click devo visualizzare la stessa pagina aspx in una nuova finestra broswer, questa volta però tale finestra incorpora il contenuto html in un documento pdf.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 13 lug 2010 - 11:26
>ho una pagina aspx con un button in cui in seguito al suo click
>devo visualizzare la stessa pagina aspx in una nuova finestra
>broswer, questa volta però tale finestra incorpora il contenuto
>html in un documento pdf.
a prescindere dal fatto che forse potresti evitare di aprire una nuova finestra (anche se non posso dirlo a priori, perchè dovrei capire a cosa serve la nuova pagina se identica), puoi fare come fa google immagini, con un iframe che come sorgente ha un pdf. Che ne pensi?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
ciccioherz
Profilo
| Junior Member
93
messaggi | Data Invio:
mar 13 lug 2010 - 12:54
No siamo fuori strada.
la finestra deve essere una seconda aperta.
il tutto mi serve perche così è stato richiesto. l'utente, vedendo la nuova finestra incorporata in acrobat pdf all'interno del broswer decide se salvarla (in pdf ovviamente) e stamparla.
così mi è stato richiesto, così devo fare e così fanno molti e molti siti web.
tanto per citarne uno solo, joomla contiene tale funzione in tutte le sue versioni credo, di sicuro ce l'ha nella 1.5
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 13 lug 2010 - 12:56
>la finestra deve essere una seconda aperta.
intendevo proprio una seconda aperta..
>il tutto mi serve perche così è stato richiesto. l'utente, vedendo
>la nuova finestra incorporata in acrobat pdf all'interno del
>broswer decide se salvarla (in pdf ovviamente) e stamparla.
>così mi è stato richiesto, così devo fare e così fanno molti
>e molti siti web.
>tanto per citarne uno solo, joomla contiene tale funzione in
>tutte le sue versioni credo, di sicuro ce l'ha nella 1.5
quello che non ho capito è se tu vuoi avere la pagina DENTRO al pdf oppure se vuoi la pagina replicata e SOTTO il pdf..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Gluck74
Profilo
| Guru
1.359
messaggi | Data Invio:
mar 13 lug 2010 - 13:47
da quello che hai detto io ho capito che vuoi la stampa/visualizzazione della pagina web in versione PDF.
Per fare questo innanzi tutto ti server una libreria che ti permetta appunto di creare un pdf.
Cercando su google magari trovi qualcosa di free da poter installare sul server.
Dopo dipende dalle funzionalità della libreria che hai scaricato, ma seguendo gli esempi che sicuramente ci saranno, potrai risolvere.
Ciao
Alcuni riferimenti:
http://aspalliance.com/114_How_to_implement_a_Render_this_page_in_PDF.all
http://www.codeproject.com/KB/aspnet/Creating_PDF_documents_in.aspx
____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 13 lug 2010 - 14:21
>da quello che hai detto io ho capito che vuoi la stampa/visualizzazione
>della pagina web in versione PDF.
Era proprio quello che stavo cercando di capire. In tal caso, ITextSharp è una buonissima libreria.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
ciccioherz
Profilo
| Junior Member
93
messaggi | Data Invio:
mar 13 lug 2010 - 17:40
ITextSharp la conosco, ma sarebbe troppo elaborato il processo..
ho trovato invece questo ottimo eseguibile wkhtmltopdf che tra l'altro (cosa fondamentale) è in grado di generare il pdf seguendo le direttive del css in base ai valori argument che passo al processo stesso. (nel mio caso, gli dico di usare il css media print e lui lo fa).
Ma si tratta comunque di un exe da portare dietro..cosa che vorrei evitare..ma a quanto pare è compito arduo.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 13 lug 2010 - 17:42
>Ma si tratta comunque di un exe da portare dietro..cosa che vorrei
>evitare..ma a quanto pare è compito arduo.
eh, una dll o un exe o una dll scritta da te serve cmq..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
mrub
Profilo
| Junior Member
51
messaggi | Data Invio:
ven 16 lug 2010 - 18:04
guarda che itextsharp non è per niente complicato. Inoltre se la pagina non è complessa puoi effettuare il render dell'html generato dalla pagina e puoi utilizzare un pdf come modello. Di seguito riporto un paio di routine che potrebbero farti comodo, una per salvare il pdf sul server ed una per visualizzare il pdf senza salvarlo. I dati da visualizzare sono contenuti in un repeater che genera una tabella.
Imports System
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.text.html.simpleparser
Imports iTextSharp.text.html
Sub RenderDaPdf()
Response.Clear()
Response.ContentType = "application/pdf"
Dim lettorePdf As New PdfReader(Server.MapPath("~/rid.pdf"))
Dim rettangolo As Rectangle = lettorePdf.GetPageSize(1)
Dim mioWidth As Single = rettangolo.Width
Dim mioHeight As Single = rettangolo.Height
Dim doc As Document = New Document
'Dim doc As Document = New Document(rettangolo, 50, 50, 50, 50)
Dim ms As New MemoryStream
Dim ScrittorePdf As PdfWriter = PdfWriter.GetInstance(doc, ms)
doc.Open()
Dim contenutoByte As PdfContentByte = ScrittorePdf.DirectContent
' doc.NewPage()
Dim i As Integer
Dim sw As StringWriter
Dim hw As HtmlTextWriter
Dim sr As StringReader
Dim htmlparser As HTMLWorker
For i = 1 To 3
doc.NewPage()
Dim pagina1 As PdfImportedPage = ScrittorePdf.GetImportedPage(lettorePdf, 1)
'contenutoByte.AddTemplate(pagina1, 0.5F, 0, 0, 0.5F, 0, mioHeight / 2)
'contenutoByte.AddTemplate(pagina1, 0.95F, 0, 0, 0.95F, 0, 0)
contenutoByte.AddTemplate(pagina1, -50, -40)
contenutoByte.BeginText()
Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, True)
contenutoByte.SetFontAndSize(bf, 8)
contenutoByte.SetTextMatrix(100, 50)
scriviTestoPagina(i, contenutoByte)
contenutoByte.EndText()
sw = New StringWriter()
hw = New HtmlTextWriter(sw)
Repeater1.RenderControl(hw)
sr = New StringReader(sw.ToString())
htmlparser = New HTMLWorker(doc)
htmlparser.Parse(sr)
Next
doc.Close()
'se voglio scrivere il pdf sul FileSystem:
'PdfWriter.GetInstance(doc, New FileStream(Request.PhysicalApplicationPath + "\2.pdf", FileMode.Create))
'Response.Redirect("~/2.pdf")
ScrittorePdf.Flush()
Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length)
Response.OutputStream.Flush()
Response.OutputStream.Close()
Response.End()
End Sub
Sub CreaDaPdf()
'Response.Clear()
'Response.ContentType = "application/pdf"
Dim nomefileDest As String = "~/documenti/c_" & Request.QueryString("i") & "_rid_" & Request.QueryString("d") & ".pdf"
'Dim nomefileDest As String = "~/documenti/rid/rid" & Request.QueryString("p") & ".pdf"
Dim lettorePdf As New PdfReader(Server.MapPath("~/rid.pdf"))
Dim rettangolo As Rectangle = lettorePdf.GetPageSize(1)
Dim mioWidth As Single = rettangolo.Width
Dim mioHeight As Single = rettangolo.Height
Dim doc As Document = New Document
Dim ms As New MemoryStream
Dim ScrittorePdf As PdfWriter = PdfWriter.GetInstance(doc, New FileStream(Server.MapPath(nomefileDest), FileMode.Create))
doc.Open()
Dim contenutoByte As PdfContentByte = ScrittorePdf.DirectContent
' doc.NewPage()
Dim i As Integer
Dim sw As StringWriter
Dim hw As HtmlTextWriter
Dim sr As StringReader
Dim htmlparser As HTMLWorker
For i = 1 To 3
doc.NewPage()
Dim pagina1 As PdfImportedPage = ScrittorePdf.GetImportedPage(lettorePdf, 1)
'contenutoByte.AddTemplate(pagina1, 0.5F, 0, 0, 0.5F, 0, mioHeight / 2)
'contenutoByte.AddTemplate(pagina1, 0.95F, 0, 0, 0.95F, 0, 0)
contenutoByte.AddTemplate(pagina1, -50, -40)
contenutoByte.BeginText()
Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, True)
contenutoByte.SetFontAndSize(bf, 8)
contenutoByte.SetTextMatrix(500, 50)
scriviTestoPagina(i, contenutoByte)
contenutoByte.EndText()
sw = New StringWriter()
hw = New HtmlTextWriter(sw)
Repeater1.RenderControl(hw)
sr = New StringReader(sw.ToString())
htmlparser = New HTMLWorker(doc)
htmlparser.Parse(sr)
Next
doc.Close()
'se voglio scrivere il pdf sul FileSystem:
'PdfWriter.GetInstance(doc, New FileStream(Request.PhysicalApplicationPath + "\2.pdf", FileMode.Create))
Response.Redirect(nomefileDest)
'ScrittorePdf.Flush()
'Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length)
'Response.OutputStream.Flush()
'Response.OutputStream.Close()
'Response.End()
End Sub
Torna su
Stanze Forum
Elenco Threads
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 !