martedì 21 marzo 2023

C# creazione di un file pdf tramite la libreria gratuita PdfSharp in .Net 7

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_csharp-creazione-di-un-file-pdf-tramite-la-libreri_1822.aspx


In questo articolo vedremo come creare un file pdf, tramite la libreria gratuita PdfSharp http://www.pdfsharp.net/ il quale sorgente è disponibile anche su Git, qui https://github.com/empira/PDFsharp per la creazione e gestione dei file pdf.

La libreria è open source, e può essere utilizzato anche in ambito di programmi commerciali.

In questo articolo introduttivo vedremo come gestire in un progetto di tipo “app Windows Forms” con la versione del framework 7, e con il linguaggio di programmazione C# i file pdf, ed in particolare la creazione di un file pdf.

Nonostante la libreria non viene aggiornata da circa 5 anni, è possibile utilizzarla anche con l’ultima versione del Framework, attualmente il .Net 7, svolgendo ottimamente la gestione dei file pdf.

Verrà utilizzato l’ambiente di sviluppo Visual Studio 2022 community, il codice potrà essere utilizzato anche con versioni precedenti.


Creazione del progetto

Si crea un nuovo progetto di tipo “App Windows Forms” impostando un determinato nome al progetto ed un percorso, e selezionando la versione del Framework 7. 

Nella form aggiungiamo tre controlli, una label con la proprietà “Text” impostata su “Testo:”, un controllo casella di controllo, con la proprietà “Multiline” impostata a “True” e la proprietà “Name” impostata su “TxtTesto”, ed un controllo di tipo pulsante, con la proprietà “Name” impostata su “BtnCrea” e la proprietà “Text” impostata su “Crea”, il tutto come mostrato in figura 1.

Figura 1 - I controlli nella form


Terminata la fase di posizionamento dei vari controlli, non resta che aggiungere tramite Nuget, la libreria “PdfSharp” in modo da poter utilizzare le varie classi per la creazione dei file pdf.

Tramite Nuget ( Strumenti->Gestione Pacchetti Nuget->Gestione Pacchetti NuGet per la soluzione), installiamo il componente PdfSharp, selezionandolo dalla finestra come mostrato in figura 2, oppure tramite la seguente riga di comando “Nuget, NuGet\Install-Package PdfSharp -Version 1.50.5147”, dove la momento in cui viene pubblicato l’articolo è la versione “1.50.5147”.


Figura 2 – Il componente PdfSharp dalla finestra Nuget.



Stesura del codice


Terminata la preparazione del progetto con i controlli posizionati e l’aggiunta al componente “PdfSharp” non resta che scrivere il codice.

Passiamo in visualizzazione codice della nostra form, ed aggiungiamo lo spazio dei nomi per la gestione delle classi del componente “PdfSharp”, in alto, sopra ad ogni dichiarazione, aggiungiamo i namespace relativi a pdsfharp.



Qui di seguito si riporta il frammento di codice delle suddette operazioni.


C#

using PdfSharp;

using PdfSharp.Drawing;

using PdfSharp.Pdf;

using PdfSharp.Pdf.IO;


Ora passiamo in visualizzazione grafica e facciamo doppio click sul pulsante “Crea” in modo da passare in visualizzazione codice dell’evento click del pulsante.

In questo pulsante, andremo a creare il file pdf, impostando un titolo in grassetto al centro della pagina con una grandezza di 20, e sotto, il testo digitato nella casella di testo con un testo a 12 ed allineato a sinistra, il tutto come mostrato in figura 3.




Figura 3 – Il risultato della creazione del file pdf.


Per la creazione dei file pdf, occorre utilizzare la classe “PdfDocument” che permette di gestire i file “Pdf”, una classe “PdfPage” che permette di gestire le singole pagine, come il testo, immagini e tanto altro, un oggetto di tipo “XGraphics” per la gestione del testo nella pagine ed infine l’utilizzo della classe “Font” per gestire il tipo di scrittura, come grandezza, formattazione e tanto altro.

Il metodo “DrawString” permette di scrivere il testo nella pagina, mentre il metodo “Save” salva il documento con il nome e percorso impostato.

Di seguito si riporta il codice dell’evento click delle suddette operazioni. 


C#

private void BtnCrea_Click(object sender, EventArgs e)

        {

            try

            {

                //Creo un documento per la gestione del pdf

                PdfDocument documentoPdf = new PdfDocument();

                //Imposto il titolo

                documentoPdf.Info.Title = "Titolo del nuovo file Pdf";

                //Aggiungo una pagina

 

                PdfPage pagina = documentoPdf.AddPage();

                //Oggetto grafica per la scrittura nella pagina

                XGraphics XgfxScrittura = XGraphics.FromPdfPage(pagina);

                //Creo il font

                XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic);

                //Scrivo nella pagina il titolo

                XgfxScrittura.DrawString("Testo centrale!", font, XBrushes.Black, new XRect(0, 0, pagina.Width, 100), XStringFormats.Center);

                //Scrivo nella pagina il testo della form

                font = new XFont("Verdana", 12, XFontStyle.Regular);

                

                XgfxScrittura.DrawString(TxtTesto.Text, font, XBrushes.Black, 20, 100);

                //Salvo il file

                string PercorsoNomeFile = "C:\\Varie\\FileCreatoPdfSharp.pdf";

 

                documentoPdf.Save(PercorsoNomeFile);

                

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

        }


Prima di eseguire il codice, occorre inserire nel costruttore della form, dopo “InitializeComponent”, l’inizializzazione del “Encoding” altrimenti genera un errore dovuto al font, del tipo “No data is available for encoding 1252. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.”.

Nel costruttore aggiungere l’inizializzazione ad encoding, di seguito si riporta il frammento di codice.

C#

public Form1()

        {

            InitializeComponent();

             Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        }



Conclusioni

L’articolo ha fornito al lettore una panoramica introduttivo sulla creazione dei file pdf con una libreria gratuita ed open source, utilizzabile anche per progetti commerciali.

Le potenzialità offerte dalla libreria “PdfSharp” offre numerosi funzionalità nella gestione dei file “Pdf” fornendo al programmatore semplificazione nella stesura del codice, ma soprattutto rapidità nella creazione di applicazioni con il quale gestire questa tipologia di file.

Nessun commento: