aspnet-c#

Creare un PDF con iTextSharp

4 Flares 4 Flares ×
FacebookTwitterGoogle+tumblrLinkedIn

Oggi vi mostro come creare un PDF con iTextSharp, una libreria (scritta in C#) pronta all’uso.
Una volta scaricata da questo link non ci resta che includerla nel nostro progetto in Visual Studio.

A questo punto creiamo una nuova WebForm che chiameremo “GeneraPdf .aspx” e includiamo il codice seguente nel file “GeneraPdf.aspx.cs”:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Configuration;

public partial class GeneraPdf : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
            Verso oVerso = new Verso();
            oVerso.LoadTicket(int.Parse(Request.QueryString["id"]));

            string id = Request.QueryString["id"];
            string autore = "Mario Rossi";
            string titolo = "Pagina di prova";
            string descrizione = "Lorem ipsum dolor sit amet...";

            // Creiamo il documento PDF istanziando l'oggetto Document messo a disposzione
            // dalla libreria iTextSharp
            var document = new Document(PageSize.A4, 100, 100, 25, 25);

            // Creiamo un oggetto MemoryStream che conterrà in memoria il file pdf che andremo
            // via via creando con i passi successivi
            var output = new MemoryStream();
            var writer = PdfWriter.GetInstance(document, output);

            // Aprimao il docmento
            document.Open();

            // Creiamo i vari fonts che utilizzeremo nel nostro pdf
            //( per maggiori dettagli: http://www.mikesdotnetting.com/Article/81/iTextSharp-Working-with-Fonts )
            var titleFont = FontFactory.GetFont("Arial", 20, Font.BOLD);
            var subTitleFont = FontFactory.GetFont("Arial", 14, Font.BOLD);
            var boldTableFont = FontFactory.GetFont("Arial", 12, Font.BOLD);
            var endingMessageFont = FontFactory.GetFont("Arial", 10, Font.ITALIC);
            var bodyFont = FontFactory.GetFont("Arial", 12, Font.NORMAL);

            // Aggiungiamo un paragrafo per la visualizzazione del titolo
            document.Add(new Paragraph("Dettaglio Ticket Verso", titleFont));
            // Aggiungiamo un ulteriroe paragafro per il sottotitolo
            document.Add(new Paragraph("Riepilogo dati della segnalazione", bodyFont));
            // Aggiungiamo una linea vuota e andiamo a capo
            document.Add(Chunk.NEWLINE);

            // Aggiungiamo un paragrafo che contiene il titolo della risorsa
            document.Add(new Paragraph(titolo, subTitleFont));

            // Creiamo una tabella per visualizzare le informazioni recuperate dal database
            var infoTable = new PdfPTable(2);
            infoTable.HorizontalAlignment = 0;
            infoTable.SpacingBefore = 10;
            infoTable.SpacingAfter = 10;
            infoTable.DefaultCell.Border = 0;

            infoTable.SetWidths(new int[] { 2, 4 });
            infoTable.AddCell(new Phrase("Id:", boldTableFont));
            infoTable.AddCell(id);
            infoTable.AddCell(new Phrase("Autore:", boldTableFont));
            infoTable.AddCell(autore);
            infoTable.AddCell(new Phrase("Descrizione:", boldTableFont));
            infoTable.AddCell(descrizione);
            document.Add(infoTable);

            // Creiamo un ogetto immagine iTextSharp
            var logo = iTextSharp.text.Image.GetInstance(pathimage);
            // Definiamo le propietà dell'immagine
            logo.ScaleToFit(150f, 150f);
            logo.Alignment = iTextSharp.text.Image.ALIGN_LEFT;
            logo.IndentationLeft = 9f;
            logo.SpacingAfter = 9f;
            logo.Border = Rectangle.BOX;
            //logo.BorderColor = Color.BLACK;
            logo.BorderWidth = 5f;
            document.Add(logo);

            // Aggiungiamo due linee vuote
            document.Add(Chunk.NEWLINE);
            document.Add(Chunk.NEWLINE);

            // Aggiungiamo un paragrafo per il messaggio di chiusura
            //var endingMessage = new Paragraph("Questo PDF è stato generato grazie all'utilizzo della libreria iTextSharp", endingMessageFont);
            //document.Add(endingMessage);

            // Chiudiamo il documento PDF
            document.Close();

            // Settiamo l'http header in modo che la risposta del server sia del tipo pdf
            // ( passaggio fondamentale )
            Response.ContentType = "application/pdf";
            // Ed infine mandiamo in output il nostro stream che contiene appunto i dati del nostro pdf
            Response.BinaryWrite(output.GetBuffer());
        }
}

Ecco a voi, il gioco è fatto!
La pagina in questione genererà un file PDF pronto per essere scaricato dall’utente o semplicemente visualizzato nel browser di navigazione.

FacebookTwitterGoogle+tumblrLinkedIn

4 thoughts on “Creare un PDF con iTextSharp

  1. giulio scrive:

    grazie della guida ,
    come si puo fare per leggerlo e cercare un testo
    mi puoi aiutare ?
    grazie.

    1. icoarena scrive:

      Ciao Giulio,
      scusami ma non ho capito cosa intendi: in che senso vuoi leggerlo o cercare un testo?

  2. Leo scrive:

    Molto interessante.

    E’ possibile includere un allegato ZIP o RAR nel file PDF?

    grazie mille

  3. Gennaro Ferro scrive:

    Ciao Ico,
    utilizzo da circa 5 anni questa libraria che risulta essere molto efficiente per la conversione, l’unico problema è con gli xls come hai ovviato a questo problema?

Lascia un Commento

L'indirizzo email non verrà pubblicato.

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

4 Flares Twitter 0 Facebook 0 Google+ 3 Pin It Share 0 LinkedIn 1 4 Flares ×