domenica 10 maggio 2020

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

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/microsoft-net-framework/art_net-aggiungere-una-firma-immagine-ai-file-pdf-con-vbnet-e-c_1651.aspx

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.

Nessun commento: