In questo articolo vedremo come generare un file PDF tramite la tecnologia .Net, in particolare con il linguaggio di programmazione VB.Net (ma apparte la sintessi è uguale anche per C#).

Per generare i file Pdf utilizzeremo la libreria iTextSharp scaricabile link sotto

Una libreria che offre proprietà e metodi per generare file PDF.

Gli esempi di codice che vedremo si possono utilizzare sia per l’ambiente Web che per applicazioni di tipo Windows Application.

Creazione di un progetto

Si crea un progetto di tipo Windows Application oppure Web Application per il linguaggio di programmazione quello di interesse al lettore.

Dopo aver creato il progetto, aggiungere il riferimento alla libreria ITextSharp, in modo che possiamo gestire le varie classi per la generazione dei file PDF.

Aggiungiamo nella nostra pagina o form un pulsante il quale genera il file pdf composto da un logo, da un titolo e del testo.

Stesura del codice

Passiamo in visualizzazione codice aggiungiamo lo spazio dei nomi per la gestione dei file pdf.

Imports iTextSharp.text
Imports System.IO
Imports iTextSharp.text.pdf

Tramite le classi Document, PdfWriter generiamo il documento impostando le dimensioni ed il testo all’interno del file, mentre tramite i le classi fontFactory impostiamo il tipo di font, con la classe Paragraph impostiamo il testo.

Qui di seguito il frammento di codice per l’ambiente web per entrambi i linguaggi.

Web:

Protected Sub BtnGenera_Click(sender As Object, e As EventArgs) Handles BtnGenera.Click
        Dim Documento As New Document(PageSize.A4, 100, 100, 25, 25)
        Dim output = New MemoryStream()
        Dim Scrittura As PdfWriter = PdfWriter.GetInstance(Documento, output)
        Documento.Open()
        Dim logo = iTextSharp.text.Image.GetInstance(Server.MapPath("Img/logs.png"))
        logo.Alignment = iTextSharp.text.Image.ALIGN_LEFT
        Documento.Add(logo)
        Documento.Add(Chunk.NEWLINE)
        Documento.Add(Chunk.NEWLINE)
        Dim titleFont = FontFactory.GetFont("Arial", 20, iTextSharp.text.Font.BOLD)
        Dim ParTitolo As New Paragraph("Titolo", titleFont)
        ParTitolo.Alignment = iTextSharp.text.Element.ALIGN_CENTER
        Documento.Add(ParTitolo)
        Dim ParTesto As New Paragraph("Testo")
        Documento.Add(ParTesto)
        Documento.Close()
        Me.Response.BufferOutput = True
        Me.Response.Clear()
        Me.Response.ClearHeaders()
        Me.Response.ContentType = "application/octet-stream"
        Me.Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf")
        Me.Response.BinaryWrite(output.GetBuffer())
        Me.Response.Flush()
        Me.Response.End()
    End Sub

Windows Application:

Private Sub BtnGenera_Click(sender As System.Object, e As System.EventArgs) Handles BtnGenera.Click
        Dim Documento As New Document(PageSize.A4, 100, 100, 25, 25)
        Dim fileStream As New FileStream("E:\test.pdf", FileMode.Create, FileAccess.Write, FileShare.None)
        Dim Scrittura As PdfWriter = PdfWriter.GetInstance(Documento, fileStream)
        Documento.Open()
        'Logo
        Dim logo = iTextSharp.text.Image.GetInstance("E:\LogoAngoloDelComputer.jpg")
        logo.Alignment = iTextSharp.text.Image.ALIGN_LEFT
        Documento.Add(logo)
        Documento.Add(Chunk.NEWLINE)
        Documento.Add(Chunk.NEWLINE)
        Dim titleFont = FontFactory.GetFont("Arial", 20, iTextSharp.text.Font.BOLD)
        Dim ParTitolo As New Paragraph("Titolo", titleFont)
        ParTitolo.Alignment = iTextSharp.text.Element.ALIGN_CENTER
        Documento.Add(ParTitolo)
        Dim ParTesto As New Paragraph("Testo")
        Documento.Add(ParTesto)
        Documento.Close()
    End Sub