Leggi il codice a barre da PDF in C#

Possiamo generare e aggiungere codici a barre ai documenti PDF come descritto nel mio post precedente. In alcuni casi, potrebbe essere necessario rilevare e leggere i codici a barre incorporati nei documenti PDF in modo programmatico. Aiuta a decodificare le informazioni incorporate sotto forma di codici a barre e codici QR da documenti PDF come fatture, ricevute o rapporti. In questo articolo impareremo come leggere un codice a barre da un documento PDF usando C#.

L’articolo tratterà i seguenti argomenti:

  1. API C# per leggere codici a barre da PDF
  2. Leggi il codice a barre dal PDF
  3. Converti PDF in immagini e leggi codici a barre
  4. Leggi i codici a barre dal PDF usando PngDevice
  5. Estrai e leggi il codice a barre dal PDF
  6. Trova e leggi l’immagine del codice a barre dal PDF

API C# per leggere codici a barre da PDF

Seguiremo una procedura in due passaggi per leggere i codici a barre dai documenti PDF. In primo luogo, utilizzeremo l’API Aspose.PDF for .NET per caricare un documento PDF, quindi renderemo le sue pagine in immagini raster. Successivamente, leggeremo il codice a barre dalle immagini renderizzate utilizzando l’API Aspose.BarCode for .NET.

Si prega di scaricare la DLL dell’API o installarla utilizzando NuGet.

PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.PDF

Leggi il codice a barre da PDF usando C#

La classe Document dell’API Aspose.PDF rappresenta un documento PDF. La funzione ConvertToPNGMemoryStream() dell’API esegue il rendering di una pagina PDF in un flusso di memoria PNG. La classe BarCodeReader dell’API Aspose.BarCode ci consente di eseguire operazioni ReadBarCodes per rilevare i codici a barre. La classe BarCodeResult memorizza le informazioni sui codici a barre rilevati come il tipo di codice a barre, il testo del codice, la regione e altri parametri.

Possiamo leggere le immagini dei codici a barre incorporate in qualsiasi pagina del documento PDF seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica un documento PDF utilizzando la classe Document.
  2. Quindi, scorrere tutte le pagine e renderle nel flusso di memoria.
  3. Quindi, crea un’istanza della classe BarCodeReader con un oggetto stream.
  4. Successivamente, chiama il metodo ReadBarCodes() per ottenere l’oggetto BarCodeResult.
  5. Infine, mostra le informazioni sul codice a barre.

L’esempio di codice seguente mostra come leggere un codice a barre da un documento PDF usando C#.

// Questo esempio di codice mostra come leggere un codice a barre da un documento PDF usando C#.
// Il percorso del documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carica un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Procedi su tutte le pagine PDF a partire da pagina 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Eseguire il rendering della pagina PDF nello stream
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // Riconosci i codici a barre dall'immagine di rendering della pagina
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Mostra i risultati
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}
Codetext found: Aspose.Barcode Pdf417 Example
Symbology: Pdf417
-------------------------------
Codetext found: Aspose.Barcode QR Example
Symbology: QR
-------------------------------
Codetext found: Aspose.Barcode DataMatrix Example
Symbology: DataMatrix
-------------------------------

Si prega di scaricare il documento PDF di input con codici a barre utilizzato in questo post del blog.

Converti PDF in immagini e leggi codici a barre usando C#

Possiamo leggere i codici a barre dal documento PDF convertendo le pagine PDF in immagini utilizzando la classe PdfConverter. Consente di convertire ogni pagina di un file PDF in un’immagine, quindi leggeremo le informazioni del codice a barre dall’immagine convertita.

Possiamo leggere i codici a barre dalle pagine PDF convertite seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica un documento PDF utilizzando la classe Document.
  2. Quindi, crea un’istanza della classe PdfConverter.
  3. Facoltativamente, imposta le opzioni di rendering come BarcodeOptimization.
  4. Quindi, imposta la risoluzione dell’immagine.
  5. Quindi, specifica StartPage e EndPage per eseguire il rendering di un intervallo di pagine in immagini.
  6. Quindi, chiama il metodo DoConvert() per eseguire il rendering delle pagine selezionate in immagini.
  7. Quindi, salva l’immagine per lo streaming in un ciclo.
  8. Quindi, crea un’istanza della classe BarCodeReader con l’oggetto stream.
  9. Successivamente, chiama il metodo ReadBarCodes() per ottenere l’oggetto BarCodeResult.
  10. Infine, mostra le informazioni sul codice a barre.

L’esempio di codice seguente mostra come convertire le pagine PDF in immagini e leggere codici a barre usando C#.

// L'esempio di codice seguente mostra come convertire le pagine PDF in immagini con PDF Converter e leggere i codici a barre usando C#.
// Il percorso del documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carica un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Inizializza un PdfConvertor
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);

// Imposta l'ottimizzazione del codice a barre
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// Imposta la risoluzione della pagina
// 300 dpi è una risoluzione standard
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// Imposta tutte le pagine per il rendering in immagini
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// Rendering delle pagine selezionate nelle immagini
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // Rendering della pagina corrente nell'immagine del flusso di memoria
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // Riconosci i codici a barre dall'immagine di rendering della pagina
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Mostra i risultati
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Leggi i codici a barre da PDF usando PngDevice in C#

Ecco un altro metodo simile al precedente. L’unica differenza è che in questo metodo convertiremo le pagine del documento PDF in immagini utilizzando la classe PngDevice dell’API. Consente di convertire le pagine del documento PDF in immagini PNG.

Possiamo leggere i codici a barre dalle pagine PDF convertite come immagini PNG seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica un documento PDF utilizzando la classe Document.
  2. Quindi, crea un’istanza della classe PngDevice.
  3. Quindi, scorrere tutte le pagine e chiamare il metodo Process() per eseguire il rendering nello stream.
  4. Quindi, crea un’istanza della classe BarCodeReader con l’oggetto stream.
  5. Successivamente, chiama il metodo ReadBarCodes() per ottenere l’oggetto BarCodeResult.
  6. Infine, mostra le informazioni sul codice a barre.

L’esempio di codice seguente mostra come convertire le pagine PDF in immagini PNG e leggere i codici a barre usando C#.

// L'esempio di codice seguente mostra come convertire le pagine PDF in immagini con PngDevice e leggere i codici a barre usando C#.
// Il percorso del documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carica un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Crea un dispositivo PNG con una risoluzione standard di 300 dpi
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// Procedi su tutte le pagine PDF a partire da pagina 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Eseguire il rendering della pagina PDF nello stream
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

    // Riconosci il codice a barre dall'immagine di rendering della pagina
    BarCodeReader reader = new BarCodeReader(ms);

    // Mostra i risultati
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Estrai e leggi il codice a barre da PDF usando C#

Possiamo anche riconoscere le immagini di codici a barre incorporate nelle pagine PDF utilizzando la classe PdfExtractor. Consente di estrarre immagini da PDF e quindi leggeremo le informazioni sul codice a barre dall’immagine estratta.

Possiamo leggere i codici a barre dalle immagini estratte seguendo i passaggi indicati di seguito:

  1. Innanzitutto, crea un’istanza della classe PdfExtractor.
  2. Quindi, associa il documento PDF di input utilizzando il metodo BindPdf().
  3. Quindi, imposta l’intervallo di pagine per l’estrazione dell’immagine.
  4. Quindi, chiama il metodo ExtractImage() per estrarre le immagini.
  5. Quindi, salva l’immagine per lo streaming in un ciclo.
  6. Quindi, crea un’istanza della classe BarCodeReader con l’oggetto stream.
  7. Successivamente, chiama il metodo ReadBarCodes() per ottenere l’oggetto BarCodeResult.
  8. Infine, mostra le informazioni sul codice a barre.

L’esempio di codice seguente mostra come estrarre e leggere un’immagine di codice a barre da un documento PDF usando C#.

// L'esempio di codice seguente mostra come convertire le pagine PDF in immagini con PdfExtractor e leggere i codici a barre usando C#.
// Il percorso del documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Associa un documento PDF
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);

// Imposta l'intervallo di pagine per l'estrazione dell'immagine
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

// Estrarre le immagini
pdfExtractor.ExtractImage();

// Salva le immagini per lo streaming in un ciclo
while (pdfExtractor.HasNextImage())
{
  // Salva l'immagine per lo streaming
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // Riconosci i codici a barre dal flusso di immagini sopra
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

Trova e leggi immagini di codici a barre da PDF usando C#

Possiamo anche trovare ed estrarre immagini di codici a barre da documenti PDF utilizzando la classe ImagePlacementAbsorber. Rappresenta un oggetto assorbitore di oggetti di posizionamento dell’immagine. Esegue una ricerca degli utilizzi delle immagini e fornisce l’accesso ai risultati della ricerca tramite la raccolta ImagePlacements. Questo metodo aiuta a riconoscere i codici a barre con la risoluzione originale. Potrebbe non riconoscere correttamente i formati vettoriali.

Possiamo trovare e leggere i codici a barre dai documenti PDF seguendo i passaggi indicati di seguito:

  1. Innanzitutto, carica un documento PDF utilizzando la classe Document.
  2. Quindi, crea un’istanza della classe ImagePlacementAbsorber.
  3. Quindi, chiama il metodo Visit() per ogni pagina in un ciclo.
  4. Quindi, scorrere tutte le immagini trovate nella raccolta ImagePlacements.
  5. Quindi, salva l’immagine nel flusso di memoria.
  6. Quindi, crea un’istanza della classe BarCodeReader con l’oggetto stream.
  7. Successivamente, chiama il metodo ReadBarCodes() per ottenere l’oggetto BarCodeResult.
  8. Infine, mostra le informazioni sul codice a barre.

L’esempio di codice seguente mostra come trovare e leggere le immagini di codici a barre da un PDF usando C#.

// Questo esempio di codice mostra come leggere un codice a barre da un documento PDF usando ImagePlacementAbsorber.
// Il percorso del documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Carica un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Inizializza ImagePlacementAbsorber
Aspose.Pdf.ImagePlacementAbsorber imagePlacementAbsorber = new Aspose.Pdf.ImagePlacementAbsorber();

// Elabora tutte le pagine PDF nel documento a partire dalla pagina 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Visita la pagina crea un estrattore di immagini
    imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);

    // Estrai tutte le immagini dalla pagina PDF
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // Converti un'immagine dalla pagina PDF nello stream
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // Riconosci il codice a barre dall'immagine estratta della pagina
        BarCodeReader reader = new BarCodeReader(ms);

        // Mostra i risultati
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine("Codetext found: " + result.CodeText);
            Console.WriteLine("Symbology: " + result.CodeType);
            Console.WriteLine("-------------------------------");
        }
    }
}

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per provare le librerie senza limitazioni di valutazione.

Conclusione

In questo articolo abbiamo imparato a leggere i codici a barre da documenti PDF in C#. Abbiamo anche visto vari approcci e metodi per estrarre immagini da un documento PDF e decodificare i codici a barre incorporati in modo programmatico. Inoltre, puoi saperne di più sulle API utilizzando la documentazione per Aspose.BarCode e la documentazione per Aspose.PDF. In caso di ambiguità, non esitare a contattarci sul nostro forum.

Guarda anche