giovedì 12 marzo 2026

C# verificare se un file è pdf con la tecnica magic number

Durante lo sviluppo software, possiamo avere l'esigenza di verificare l'effettivo tipo di file, non solo dall'estensione ma dal punto di vista digitale.
Nel gestire i file, potrebbe memorizzare file che non sono per quel tipo, solo perchè rinominati.
Tramite la tecnica del Magic Number, un modo per verificare i primi byte di un file. Di seguito un frammento di codice per verificare se un file è pdf oppure no, nel linguaggio di programmazione C#.


C#

private void BtnVerificaFilePdfMagicNumber_Click(object sender, EventArgs e)

{

    try

    {

        string percorsoNomeFile = @"C:\varie\test.pdf"; // Percorso del file PDF

        byte[] pdfMagicNumber = { 0x25, 0x50, 0x44, 0x46, 0x2D }; // ASCII for "%PDF-"

        bool isPdf = true;

        using (FileStream fs = new FileStream(percorsoNomeFile, FileMode.Open, FileAccess.Read))

        {

            byte[] buffer = new byte[pdfMagicNumber.Length];

            fs.ReadExactly(buffer);

 

            for (int i = 0; i < pdfMagicNumber.Length; i++)

            {

                if (buffer[i] != pdfMagicNumber[i])

                {

                    isPdf = false;

                    break;

                }

            }

                    

        }

 

        if (isPdf)

        {

            MessageBox.Show( "E' un file pdf");

        }

        else

        {

            MessageBox.Show("Non è un file PDF valido.");

        }

 

    }

    catch (Exception ex)

    {

        MessageBox.Show($"Errore : {ex.Message}");

    }

}






Nessun commento: