ITextSharp e apertura pdf da win app

martedì 09 giugno 2009 - 09.55

volperubbia Profilo | Senior Member

Ciao a tutti,
sto usando iTextSharp per la creazione al volo di documenti pdf ...

Dim objStream As IO.MemoryStream = New IO.MemoryStream
Dim objDocument As iTextSharp.text.Document = New iTextSharp.text.Document
Dim objFont As iTextSharp.text.Font = Nothing
iTextSharp.text.pdf.PdfWriter.GetInstance(objDocument, objStream)
objDocument.SetPageSize(iTextSharp.text.PageSize.A4)
objDocument.SetMargins(57, 57, 57, 57)
objDocument.Open()
objFont = New iTextSharp.text.Font(iTextSharp.text.Font.GetFamilyIndex("Comic.ttf"), 12, iTextSharp.text.Font.BOLD)
objDocument.Add(New iTextSharp.text.Chunk("Ciao!", objFont))
objDocument.Close()

A questo punto per aprire il pdf, se fossi in una web application, farei:

Response.ContentType = "application/pdf"
Response.OutputStream.Write(objStream.GetBuffer, 0, objStream.GetBuffer.Length)
Response.OutputStream.Flush()
Response.OutputStream.Close()

e fin qui tutto ok (funziona).

Per aprire invece il pdf da una windows application, come potrei fare?

Grazie per l'attenzione,
Davide

freeteo Profilo | Guru

Ciao,
a mio avviso puoi salvare lo stream di byte su un file temporaneo e poi fare la "ShellExecute" ovvero lanciare il processo, quindi aprire il file nel computer locale (con il viewer predefinito) :
string tmp = System.IO.Path.GetTempFileName() + ".pdf"; ...salvi i byte... System.Diagnostics.Process.Start(tmp);


Ciao.

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

volperubbia Profilo | Senior Member

Ciao Matteo
Hai ragione col file temporaneo nessun problema, solo che volevo evitare questa strada,
anche perchè, dovendolo poi cancellare, potrebbe risultare in uso ...
Me la studio ancora un attimo

Davide

freeteo Profilo | Guru

Immagino...però secondo me non riesci perchè Windows apre il file in quel modo, altrimenti devi avere un visualizzatore e vedere se dispone di qualche metodo per visualizzare dei bytes o quantomeno passargli un pdf in memoria.
In questo modo però ti leghi al viewer, quindi se uno ad esempio come me usa FoxitReader al posto dell'Acrobat (perchè è molto più veloce e senza tanti fronzoli) devi gestire le versioni...oltre che parlare con COM nel viewer è sempre un "campo minato"...

Ciao.

Matteo Raumer
[MVP Visual C#]
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5