In questo articolo vedremo come generare un file PDF tramite la tecnologia .Net, in particolare con il linguaggio di programmazione VB.Net e C#.
Per generare i file Pdf utilizzeremo la libreria iTextSharp scaricabile dal seguente sito http://sourceforge.net/projects/itextsharp/
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.
Qui di seguito si riporta l’esempio di codice per entrambi i linguaggi.
VB.Net
Imports
iTextSharp.text
Imports
System.IO
Imports iTextSharp.text.pdf
C#
using
iTextSharp.text;
using
iTextSharp.text.pdf;
using System.IO;
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
VB.Net
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
C#
protected
void BtnGenera_Click(object
sender, EventArgs e)
{
Document Documento = new Document(PageSize.A4, 100, 100, 25, 25);
MemoryStream output = new MemoryStream();
PdfWriter
Scrittura = PdfWriter.GetInstance(Documento,
output);
Documento.Open();
var
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);
var titleFont = FontFactory.GetFont("Arial", 20, iTextSharp.text.Font.BOLD);
Paragraph ParTitolo = new Paragraph("Titolo",
titleFont);
ParTitolo.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
Documento.Add(ParTitolo);
Paragraph ParTesto = new Paragraph("Testo");
Documento.Add(ParTesto);
Documento.Close();
this.Response.BufferOutput
= true;
this.Response.Clear();
this.Response.ClearHeaders();
this.Response.ContentType
= "application/octet-stream";
this.Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf");
this.Response.BinaryWrite(output.GetBuffer());
this.Response.Flush();
this.Response.End();
}
Windows
Application:
VB.Net
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()
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
Dim ParTesto As New Paragraph("Testo")
Documento.Add(ParTesto)
Documento.Close()
End Sub
C#
private
void BtnGenera_Click(object
sender, EventArgs e)
{
Document Documento
= new Document(PageSize.A4, 100, 100, 25, 25);
PdfWriter Scrittura
= PdfWriter.GetInstance(Documento,
fileStream);
Documento.Open();
logo.Alignment
= iTextSharp.text.Image.ALIGN_LEFT;
Documento.Add(logo);
Documento.Add(Chunk.NEWLINE);
Documento.Add(Chunk.NEWLINE);
var titleFont = FontFactory.GetFont("Arial", 20, iTextSharp.text.Font.BOLD);
var ParTitolo = new Paragraph("Titolo", titleFont);
ParTitolo.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
Documento.Add(ParTitolo);
Paragraph ParTesto = new Paragraph("Testo");
Documento.Add(ParTesto);
}
Conclusioni
L’articolo ha voluto fornire in maniera introduttiva il lettore alla generazione dei file in formato pdf, nel creare un semplice file composto dal testo ed immagine. La libreria gratuita iTextSharp con le numerose classi permette una flessibilità e gestione dei file pdf in maniera professionale ed ottimale.
Nessun commento:
Posta un commento