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 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.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();
}
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.