Posts
154
Comments
233
Trackbacks
6
Compilare un template PDF in ASP.NET

Dopo mesi di assenza torno a postare nel mio blog e, complice un cambio di lavoro, spero di poterlo fare più assiduamente da qui in avanti.
Bando alle ciance: in una mia applicazione ASP.NET è nata una nuova esigenza e cioè quella di consentire agli utenti la stampa in PDF di vari moduli precompilati.
Come fare? I metodi sono tanti, le librerie PDF presenti sul mercato sono innumerevoli. La soluzione che propongo in questo post è quella di usare template PDF più la libreria gratuita iTextSharp. I template PDF possono essere realizzati con un qualsiasi strumento di editing e devono solo avere una serie di field nei punti in cui dovranno essere inseriti dinamicamente i dati dell'utente.

Una volta preparati i template PDF e aggiunto un riferimento alla libreria iTextSharp, il codice necessario alla compilazione dinamica è molto semplice:

   1: Imports System
   2: Imports System.IO
   3: Imports iTextSharp.text
   4: Imports iTextSharp.text.pdf
   5: ...
   6: ...
   7: ...
   8: Private Sub Stampa()
   9:    Dim memStream As New MemoryStream
  10:    Dim pdfTemplate As String = GlobalVars.TemplatesPath & "template.pdf"
  11:    Dim pdfReader As New PdfReader(pdfTemplate)
  12:    Dim pdfStamper As New PdfStamper(pdfReader, memStream)
  13:    pdfStamper.Writer.CloseStream = False
  14:    Dim pdfFormFields As AcroFields = pdfStamper.AcroFields
  15:    ' Setto i field che voglio valorizzare sul documento PDF
  16:    ' Checkbox
  17:    pdfFormFields.SetField("Check1", "1")
  18:    pdfFormFields.SetField("Check2", "0")
  19:    ' Campi testuali
  20:    pdfFormFields.SetField("Text1", "Nome")
  21:    pdfFormFields.SetField("Text2", "Cognome")
  22:    ' Rimuovo tutti i fields
  23:    pdfStamper.FormFlattening = True
  24:    pdfStamper.Close()
  25:  
  26:    ' Faccio direttamente la response del contenuto
  27:    Response.AppendHeader("content-disposition", "attachment; filename=modulo_utente.pdf")
  28:    Response.AppendHeader("Content-Length", memStream.Length.ToString)
  29:    Response.ContentType = "application/pdf"
  30:    Response.BinaryWrite(memStream.ToArray)
  31:    Response.Flush()
  32:    memStream.Close()
  33:  End Sub


Tutto qui. Da notare che il modulo generato non viene salvato da nessuna parte ma viene "sparato" direttamente nella response.

posted on mercoledì 24 settembre 2008 11.30 Print
Comments
Gravatar
# re: Compilare un template PDF in ASP.NET
Marco Minerva
24/09/2008 12.07
  
Non puoi immaginare quanto il tuo post mi tornerà utile a breve... GRAZIE INFINITE!
Gravatar
# re: Compilare un template PDF in ASP.NET
Alessandro Sorcinelli
24/09/2008 12.50
  
Anche io ho cercato in giro per trovare strumenti gratuiti. A parte le trial di ogni cosa, non ho trovato qualcosa di gratuito.

Ho visto anche un plug-in per Word, ma anche quello a pagamento.
Gravatar
# re: Compilare un template PDF in ASP.NET
marcom
02/12/2008 23.49
  
e' da poco che programmo in asp.net ... vorrei sapere dove copiare la libreria itextsharp e dove reperire e come utilizzare i template pdf visto che il listato mi dà errore sulla "globalvars"
Gravatar
# re: Compilare un template PDF in ASP.NET
gnec
12/02/2009 20.46
  
ciao!
non ho capito come creare un template pdf adatto allo scopo... con word si riesce? sapreste darmi qualche dritta?
grazie mille
Gravatar
# re: Compilare un template PDF in ASP.NET
asorcinelli@hotmail.it
12/02/2009 23.22
  
Guarda io ho usato template preparati da altre persone, ma da quello che erano stati preparati con la versione full di Adobe.
Non il reader ovviamente. Non so se sia possibile farli con Word e poi esportarli in PDF.
Gravatar
# re: Compilare un template PDF in ASP.NET
Ocram
29/11/2009 17.39
  
Ciao!
ho letto il tuo post, che mi ha aiutato tantissimo... pero ora sto trovando un po di dificolta..

ho creato un pdf template, il quale contiene una sola pagina, questo pdf template serve a stapare dei record che recupero dal database, e fin qui tutto ok, il problema nasce quando i record da stampare sono un numero elevato da dover generare una seconda o anche terza pagina, il problema è questo: come faccio a generare più pagine con lo stesso template?

Spero di essere stato chiaro
ti ringrazio in anticipo.
Gravatar
# re: Compilare un template PDF in ASP.NET
chicco
19/01/2010 16.21
  
Ciao,

consiglio a tutti di utilizzare OpenOffice Writer per generare i template PDF: è facile e abbastanza intuitivo da utilizzare. Ricordate di dare un nome ad ogni campo che inserite perchè poi lo valorizzerete da codice.
Gravatar
# re: Compilare un template PDF in ASP.NET
luigi
15/06/2010 10.36
  
Per quanto riguarda le checkbox, bisogna impostarle in modo particolare sui moduli?
sto usando acrobat
Gravatar
# re: Compilare un template PDF in ASP.NET
Claudio
11/07/2011 16.02
  
Ma non è possibile tenere alcuni campi editabili?
pdfStamper.FormFlattening = True
li chiude tutti... E non trovo documentazione per iTextSharp
Gravatar
# re: Compilare un template PDF in ASP.NET
asorcinelli@hotmail.it
12/07/2011 14.36
  
Non lo so. La mia esperienza con la iTextSharp non è andata molto avanti in questi mesi.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 2 and 8 and type the answer here:
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.
La mia foto

Logo MCAD
Logo MCTS

Visite dal 16/03/2007:

Il mio stato su Messanger: