In questo articolo vedremo come creare un file pdf, quelli di sola lettura, con un componente gratuito e che offre delle interessanti funzionalità, il tutto tramite il linguaggio di programmazione C#, con l’ambiente di sviluppo Visual Studio 2022 e la versione del Framework 7.
Il codice sarà utilizzato in un progetto di tipo “App Windows Forms” ma si può utilizzare anche per applicazioni web, in particolare con la tecnologia “Asp.Net”.
Il componente gratuito che utilizzeremo è QuestPdf, qui https://www.questpdf.com/ il sito del progetto il quale è anche open source, qui https://github.com/QuestPDF/QuestPDF il sorgente su repository GIT, mentre qui https://www.nuget.org/packages/QuestPDF il riferimento Nuget.
La particolarità di questo componente è anche quella di offrire l’anteprima di come verrà creato il file pdf, durante la stesura del codice.
Un componente che offre la possibilità allo sviluppatore di creare file pdf anche con aspetti grafici e contenuti di livello professionale.
In questo articolo vedremo una semplice creazione di un file pdf per introdurre il lettore all’uso di questo componente, inserendo un testo che sarà il titolo, del testo normale, un’immagine e la numerazione delle pagine, il tutto come mostrato in figura 1.
Figura 1 – Il risultato della creazione del file pdf
Creazione del progetto
Si crea un nuovo progetto tramite l’ambiente di sviluppo Visual Studio 2022 Community, con il linguaggio di programmazione C#, selezionando come progetto “App Windows Forms”, assegniamo al progetto un nome e nella finestra successiva impostiamo come versione del Framework la versione 7.
Aggiungiamo un pulsante con il quale eseguiremo il codice per la creazione del file pdf.
Ora non resta che aggiungere al progetto il componente “QuestPDF” possiamo farlo in due modi, il primo tramite la finestra “Nuget” di Visual Studio, e digitare nella casella di ricerca il testo “questpdf” il tutto come mostrato in figura 2.
Figura 2 – L’aggiunta al progetto del riferimento al componente QuestPDF.
Altro modo e quello di digitare nel prompt di Nuget, il comando di installazione del componente che è il seguente.
NuGet\Install-Package QuestPDF
Nel momento in cui scriviamo la versione è la 2022.12.1 del componente.
Stesura del codice
Terminata la fase per la predisposizione del progetto, non resta che scrivere il codice per la creazione del file pdf.
Passiamo in visualizzazione codice della form, ed in alto, sopra ad ogni dichiarazione, dobbiamo aggiungere lo spazio dei nomi per l’utilizzo delle classi di questo componente.
Di seguito si riporta il frammento di codice dello spazio dei nomi.
C#
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
using QuestPDF.Previewer;
Ritorniamo in visualizzazione grafica e facciamo doppio click sul pulsante, in questo modo si passa in visualizzazione codice dell’evento click del pulsante.
Tramite il metodo “Create” della classe “Document” si crea un documento, al suo interno, tramite le sottoclassi “Page”, andiamo a scrivere il contenuto nel file pdf, mentre le classi “Header” e “Footer” rispettivamente permettono di gestire l’intestazione del documento e il piè di pagina, in quest’ultimo caso con la gestione della numerazione delle pagine tramite gli opportuni metodi.
Il metodo “GeneratePdf” crea il file pdf, mentre il metodo “ShowInPreviewer” permette l’anteprima di come verrà creato il file pdf
Di seguito si riporta il codice dell’evento “Click” delle suddette operazioni per la creazione del file “Pdf”.
C#
private void BtnCrea_Click(object sender, EventArgs e)
{
Document.Create(Document =>
{
Document.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);
page.Header().Text("Prova").FontSize(22).FontColor(Colors.Green.Darken1).SemiBold();
page.DefaultTextStyle(x => x.FontSize(12));
page.Content().PaddingVertical(1, Unit.Centimetre)
.Column(Colonna =>
{
Colonna.Spacing(10);
Colonna.Item().Text("testo da inserire nella pagina ");
Colonna.Item().Image("C:\\Varie\\ipro.jpg", ImageScaling.FitArea);
});
page.Footer()
.AlignCenter()
.Text(testo =>
{
testo.DefaultTextStyle(p => p.FontSize(14));
testo.Span("Pagina ");
testo.CurrentPageNumber();
testo.Span("/");
testo.TotalPages();
}
);
});
}).GeneratePdf("C:\\Varie\\MioFileQuestPdf.pdf");
}
Conclusioni
Le potenzialità offerte dal componente “QuestPDF” sono di grande aiuto al programmatore che deve gestire nelle proprie applicazioni la gestione dei file “Pdf”.
Un componente molto potente e con funzionalità molto interessanti che permettono di scrivere codice in maniera rapida e senza difficoltà.
Tramite la guida online, qui https://www.questpdf.com/introduction è possibile consultare l’utilizzo e le varie funzionalità con molti frammenti di codice.