In questo articolo vedremo come generare un file “Pdf” tramite la tecnologia .Net sia in ambiente Web che in ambiente Windows Application, utilizzando i due linguaggi di programmazione più utilizzati VB.Net e C#
La generazione del file avviene tramite il componente iTextSharp. che abbiamo visto il relativo utilizzo in un precedente articolo http://www.iprogrammatori.it/articoli/programmazione/art_generare-file-pdf-in-net-vbnet-e-c_1417.aspx
Stesura del codice
Creare un progetto di tipo Web e Windows Application in base al proprio linguaggio di programmazione.
Nella form, aggiungete un pulsante, il quale permetterà di generare una tabella con tre colonne ed un titolo.
Passate in visualizzazione codice, ed aggiungere il seguente spazio dei nomi, ricordando di aver aggiunto tra i riferimenti la libreria "ItextSharp".
VB.Net
Imports
iTextSharp.text
Imports
iTextSharp.text.pdf
C#
using
iTextSharp.text;
using
iTextSharp.text.pdf;
A questo punto nell’evento click del pulsante dobbiamo scrivere il codice che permette tramite la classe “PdfTable” di creare una tabella, se viene passato un valore di tipo numero, indicherà il numero delle colonne.
Naturalmente l’oggetto PdfTable contiene diverse proprietà che ci permette di gestire l’allineamento, se visualizzare o no il border, ed altro ancora.
Qui di seguito si riporta il frammento di codice per entrambi i linguaggi e per entrambi l’architettura.
Web.
VB.Net
Protected
Sub BtnGeneraTable_Click(sender As Object, e As EventArgs) Handles BtnGeneraTable.Click
Dim
Documento As New
Document(PageSize.A4,
100, 100, 25, 25)
Dim
output = New MemoryStream()
'Dim
fileStream As New FileStream("E:\test.pdf", FileMode.Create,
FileAccess.Write, FileShare.None)
Dim Scrittura As PdfWriter = PdfWriter.GetInstance(Documento,
output)
Documento.Open()
'Tabella con tre colonne
Dim tabella As New PdfPTable(3)
'dimensione
tabella.TotalWidth = 550.0F
'larghezza colonne
Dim larghezzaColonne As Single() = New Single() {150.0F, 150.0F, 150.0F}
tabella.SetWidths(larghezzaColonne)
tabella.HorizontalAlignment = 0 'left
'titolo
Dim
cellaTitolo As New
PdfPCell(New
Phrase("Iscritti
"))
cellaTitolo.HorizontalAlignment = 1 'center
cellaTitolo.Border = 0
cellaTitolo.Colspan = 3
tabella.AddCell(cellaTitolo)
Dim SottoTitolo = FontFactory.GetFont("Arial", 14, iTextSharp.text.Font.BOLD)
tabella.AddCell(New Phrase("Nome",
SottoTitolo))
tabella.AddCell(New Phrase("Cognome",
SottoTitolo))
tabella.AddCell(New Phrase("Città",
SottoTitolo))
'valorizzo con il
testo
tabella.AddCell("Emanuele")
tabella.AddCell("Mattei")
tabella.AddCell("Roma")
tabella.AddCell("Marco")
tabella.AddCell("Maffei")
tabella.AddCell("Mantova")
Documento.Add(tabella)
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 BtnGeneraTable_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();
//Tabella con tre colonne
PdfPTable tabella = new
PdfPTable(3);
//dimensione
tabella.TotalWidth = 550f;
//larghezza colonne
float[] larghezzaColonne = new
float[] { 150f, 150f, 150f };
tabella.SetWidths(larghezzaColonne);
tabella.HorizontalAlignment = 0; //left
//titolo
PdfPCell
cellaTitolo = new PdfPCell(new Phrase("Iscritti "));
cellaTitolo.HorizontalAlignment = 1; //center
cellaTitolo.Border = 0;
cellaTitolo.Colspan = 3;
tabella.AddCell(cellaTitolo);
var SottoTitolo = FontFactory.GetFont("Arial", 14, iTextSharp.text.Font.BOLD);
tabella.AddCell(new Phrase("Nome", SottoTitolo));
tabella.AddCell(new Phrase("Cognome",
SottoTitolo));
tabella.AddCell(new Phrase("Città",
SottoTitolo));
//valorizzo con il
testo
tabella.AddCell("Emanuele");
tabella.AddCell("Mattei");
tabella.AddCell("Roma");
tabella.AddCell("Marco");
tabella.AddCell("Maffei");
tabella.AddCell("Mantova");
Documento.Add(tabella);
Documento.Close();
this.Response.Clear();
this.Response.ClearHeaders();
this.Response.ContentType
= "application/octet-stream";
this.Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf");
this.Response.End();
}
Qui di seguito il codice per lo sviluppo di tipo applicazioni per Windows, ossia desktop.
Windows
Application
VB.Net
'Tabella con tre colonne
Dim tabella As New PdfPTable(3)
'dimensione
tabella.TotalWidth = 550.0F
'larghezza colonne
Dim larghezzaColonne As Single() = New Single() {150.0F, 150.0F, 150.0F}
tabella.SetWidths(larghezzaColonne)
tabella.HorizontalAlignment = 0 'left
'titolo
Dim
cellaTitolo As New
PdfPCell(New
Phrase("Iscritti
"))
cellaTitolo.HorizontalAlignment = 1 'center
cellaTitolo.Border = 0
cellaTitolo.Colspan = 3
tabella.AddCell(cellaTitolo)
Dim SottoTitolo = FontFactory.GetFont("Arial", 14, iTextSharp.text.Font.BOLD)
tabella.AddCell(New Phrase("Nome",
SottoTitolo))
tabella.AddCell(New Phrase("Cognome",
SottoTitolo))
tabella.AddCell(New Phrase("Città", SottoTitolo))
'valorizzo con il
testo
tabella.AddCell("Emanuele")
tabella.AddCell("Mattei")
tabella.AddCell("Roma")
tabella.AddCell("Marco")
tabella.AddCell("Maffei")
tabella.AddCell("Mantova")
Dim Documento As New Document(PageSize.A4, 100, 100, 25, 25)
Dim
fileStream As New
FileStream("E:\testTabellavb.pdf",
FileMode.Create, FileAccess.Write,
FileShare.None)
Dim Scrittura As PdfWriter = PdfWriter.GetInstance(Documento,
fileStream)
Documento.Open()
Documento.Add(tabella)
Documento.Close()
C#
//Tabella con tre colonne
PdfPTable tabella = new
PdfPTable(3);
//dimensione
tabella.TotalWidth
= 550f;
//larghezza colonne
float[] larghezzaColonne = new
float[] { 150f, 150f, 150f };
tabella.SetWidths(larghezzaColonne);
tabella.HorizontalAlignment = 0; //left
//titolo
PdfPCell
cellaTitolo = new PdfPCell(new Phrase("Iscritti "));
cellaTitolo.HorizontalAlignment = 1; //center
cellaTitolo.Border = 0;
cellaTitolo.Colspan = 3;
tabella.AddCell(cellaTitolo);
var SottoTitolo = FontFactory.GetFont("Arial", 14, iTextSharp.text.Font.BOLD);
tabella.AddCell(new Phrase("Nome",
SottoTitolo));
tabella.AddCell(new Phrase("Cognome",
SottoTitolo));
tabella.AddCell(new Phrase("Città",
SottoTitolo));
//valorizzo con il
testo
tabella.AddCell("Emanuele");
tabella.AddCell("Mattei");
tabella.AddCell("Roma");
tabella.AddCell("Marco");
tabella.AddCell("Maffei");
tabella.AddCell("Mantova");
Document Documento = new
Document(PageSize.A4,
100, 100, 25, 25);
FileStream fileStream = new FileStream("E:\\testTabella.pdf", FileMode.Create, FileAccess.Write,
FileShare.None);
PdfWriter Scrittura = PdfWriter.GetInstance(Documento,
fileStream);
Documento.Open();
Documento.Add(tabella);
Documento.Close();
Come si vede dal codice precedente, la classe PdfTable, permette di creare una tabella, che impostando varie proprietà, possiamo definire la larghezza, il bordo, il tipo di carattere etc.
Mentre la classe di tipo "PdfCell" ci permette di gestire le singole celle.
Il metodo "AddCell", crea a sua volta le varie celle con i valori che andremo ad impostare.
Conclusioni
L’articolo ha voluto fornire le basi per la creazione di un file pdf contenente una tabella. L'utilizzo della libreria gratuita ItextSharp, offre al programmatore diverse funzionalità per la manipolazione dei file pdf, oltre che alla creazione dei file. I metodi e proprietà di facile interpretazione, agevolano il lavoro di ogni programmatore.
Nessun commento:
Posta un commento