.Net aggiungere una firma immagine ai file PDF con VB.Net e C#

articolo che fornisce indicazioni su come applicare ai propri file pdf una firma dal file immagine.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

 In questo articolo vedremo come apportare in un file di tipo “PDF” una firma tramite immagine.
Il frammento di codice, fornirà le informazioni utili per aggiungere ai propri programmi la funzionalità per aggiungere la firma tramite un proprio file immagine di tipo Jpg.
Può capitare che anziché firmare i documenti con la firma digitale e quindi tramite certificato, possiamo aggiungere nel nostro file una firma tramite file immagine.
In questo articolo vedremo come tramite i linguaggi di programmazione più utilizzati quali Visual Basic Net e C# possiamo firmare un documento con l’immagine nel proprio computer. L’esempio è per l’ambiente “Windows Application” ma possiamo utilizzare il codice anche per l’ambiente Web apportando delle piccole modifiche al codice.


Creazione del progetto


Si crea un nuovo progetto di tipo “Windows Application” tramite il linguaggio di programmazione di proprio interesse.
Posizionare nella finestra, un pulsante, con il quale andremo a firmare il documento pdf.
Accertarsi di aver sul proprio pc, in una determinata posizione, un file pdf ed un file immagine firma, in caso contrario, si potranno creare file pdf tramite il programma “Microsoft Word” o i tanti siti web che permettono la creazione di file pdf, mentre per il file immagine di firma, tramite qualsiasi programma installato sul pc, come Paint.
Per la gestione dei file PDF, dovremmo utilizzare il componente gratuito ItextSharp, che abbiamo visto nei precedenti capitoli.
Dalla finestra esplora risorse, facciamo click tramite tasto destro sul nome del progetto e dal menu che viene visualizzazione, selezioniamo la voce “Gestione Pacchetti NuGet” nella finestra che viene aperta, scriviamo nella casella di ricerca il testo “ItextSharp” togliendo gli apici.
Il primo risultato, come riportato in figura 1 facciamo click sul pulsante “Installa” accettando la licenza, in questo modo verrà aggiunto al progetto il componente.

Figura 1 – L’aggiunta del componente ITextSharp

Stesura del codice


Terminata la predisposizione del progetto e tutti i vari aspetti non ci resta che scrivere il codice.
Passiamo in visualizzazione codice, e sopra ad ogni dichiarazione, in alto, scriviamo lo spazio dei nomi, che ci permette di utilizzare le classi di questo componente per la gestione dei file di tipo “Pdf”.
Qui di seguito la dichiarazione delle suddette operazioni per entrambi i linguaggi di programmazione.

VB.Net
Imports iTextSharp.text.pdf
Imports System.IO
C#
using iTextSharp.text.pdf;
using System.IO;

Passiamo in visualizzazione grafica e facciamo doppio click sul pulsante, in questo modo passeremo in visualizzazione codice dell’evento click del pulsante.
Nell’evento click del pulsante, dovremmo scrivere il codice che permette di leggere il file pdf, tramite Classe “FileStream” in modo che restituisce uno stream, con il quale andremo a creare il file, un altro oggetto di tale classe per la gestione del file immagine, ed un altro per il file da generare.
Una volta ottenuti i vari stremdati, tramite la classe “PdfReader” andiamo a gestire le informazioni del file pdf, con la possibilità di aggiungere l’immagine, un oggetto di tipo “PdfStamper” per la gestione del file pdf da generare con l’aggiunta dell’immagine e la classe Image del componente “ITextSharp” per aggiungere il file immagine all’interno del nuovo file.
Qui di seguito si riporta il frammento di codice delle suddette operazioni per entrambi i linguaggi.

VB.Net
Private Sub BtnEsegui_Click(sender As Object, e As EventArgs) Handles BtnEsegui.Click
Using StreamFilePdfDaFirmare As Stream = New FileStream("D:\FilePdf.pdf", FileMode.Open, FileAccess.Read, FileShare.Read)
Using StreaImmagineFirma As Stream = New FileStream("D:\firma.JPG", FileMode.Open, FileAccess.Read, FileShare.Read)
Using StreamFilePdfConFirma As Stream = New FileStream("D:\FilePdf_firmaJPG.pdf", FileMode.Create, FileAccess.Write, FileShare.None)
Dim readerPdfFileOriginale = New PdfReader(StreamFilePdfDaFirmare)
Dim stamperPdfFileConFirma = New PdfStamper(readerPdfFileOriginale, StreamFilePdfConFirma)
Dim pdfContentByte = stamperPdfFileConFirma.GetOverContent(1)
Dim imageFileFirma As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(StreaImmagineFirma)
imageFileFirma.SetAbsolutePosition(100, 100)
pdfContentByte.AddImage(imageFileFirma)
stamperPdfFileConFirma.Close()
End Using
End Using
End Using
End Sub
C#
private void BtnEsegui_Click(object sender, EventArgs e)
{
using (Stream StreamFilePdfDaFirmare = new FileStream("D:\\FilePdf.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream StreaImmagineFirma = new FileStream("D:\\firma.JPG", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream StreamFilePdfConFirma = new FileStream("D:\\FilePdf_firmaJPG.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
{
var readerPdfFileOriginale = new PdfReader(StreamFilePdfDaFirmare);
var stamperPdfFileConFirma = new PdfStamper(readerPdfFileOriginale, StreamFilePdfConFirma);
var pdfContentByte = stamperPdfFileConFirma.GetOverContent(1);
iTextSharp.text.Image imageFileFirma = iTextSharp.text.Image.GetInstance(StreaImmagineFirma);
imageFileFirma.SetAbsolutePosition(100, 100);
pdfContentByte.AddImage(imageFileFirma);
stamperPdfFileConFirma.Close();
}
}

Conclusioni


Completata la stesura del codice, non ci resta che testare il nostro applicativo eseguendo il progetto, da notare che il file Pdf ed immagine, devono esistere e trovarsi nella posizione in cui viene impostato il relativo percorso.
In questo articolo si è visto come con poche righe di codice e l’ausilio del componente “ItextSharp” possiamo aggiungere alle nostre applicazioni funzionalità avanzate di gestione dei file “Pdf” con l’aggiunta di firma grafica. Tecnica che può tornare utile soprattutto nel caso si devono gestire documenti che richiedono una certa formalità, come pratiche per fornitori o clienti o istituzionali.