Läs streckkod från PDF i C#

Vi kan generera och lägga till streckkoder till PDF dokument enligt beskrivningen i mitt föregående inlägg. I vissa fall kan vi behöva upptäcka och läsa streckkoderna som är inbäddade i PDF-dokument programmässigt. Det hjälper till att avkoda inbäddad information i form av streckkoder och QR-koder från PDF-dokument som fakturor, kvitton eller rapporter. I den här artikeln kommer vi att lära oss hur man läser en streckkod från ett PDF-dokument med C#.

Artikeln ska täcka följande ämnen:

  1. C# API för att läsa streckkod från PDF
  2. Läs streckkod från PDF
  3. Konvertera PDF till bild och läs streckkoder
  4. Läs streckkoder från PDF med PngDevice
  5. Extrahera och läs streckkod från PDF
  6. Hitta och läs streckkodsbild från PDF

C# API för att läsa streckkod från PDF

Vi kommer att följa en tvåstegsprocedur för att läsa streckkoder från PDF-dokument. Först kommer vi att använda Aspose.PDF för .NET API för att ladda ett PDF-dokument, sedan renderar vi dess sidor till rasterbilder. Efter det kommer vi att läsa streckkoden från de renderade bilderna med Aspose.BarCode for .NET API.

Vänligen antingen ladda ner DLL för API:t eller installera den med NuGet.

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

Läs streckkod från PDF med C#

Klassen Document i Aspose.PDF API representerar ett PDF-dokument. Funktionen ConvertToPNGMemoryStream() i API:t renderar en PDF-sida till en PNG-minnesström. Klassen BarCodeReader i Aspose.BarCode API gör det möjligt för oss att utföra ReadBarCodes operationer för att upptäcka streckkoder. Klassen BarCodeResult lagrar upptäckt streckkodsinformation såsom streckkodstyp, kodtext, region och andra parametrar.

Vi kan läsa streckkodsbilder inbäddade på någon av sidorna i PDF-dokumentet genom att följa stegen nedan:

  1. Först laddar du ett PDF-dokument med klassen Document.
  2. Gå sedan igenom alla sidor och rendera dem till minnesströmmen.
  3. Skapa sedan en instans av klassen BarCodeReader med ett strömobjekt.
  4. Efter det, anropa ReadBarCodes()-metoden för att få BarCodeResult-objektet.
  5. Visa slutligen streckkodsinformationen.

Följande kodexempel visar hur man läser en streckkod från ett PDF-dokument med C#.

// Detta kodexempel visar hur man läser en streckkod från ett PDF-dokument med C#.
// Sökvägen till dokumentet
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Ladda ett PDF-dokument
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Fortsätt med alla PDF-sidor från och med sida 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Återge PDF-sida till strömmen
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // Känn igen streckkoder från den renderade bilden av sidan
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Visa resultat
    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
-------------------------------

Vänligen ladda ned PDF-dokumentet med streckkoder som används i det här blogginlägget.

Konvertera PDF till bild och läs streckkoder med C#

Vi kan läsa streckkoder från PDF-dokumentet genom att konvertera PDF-sidor till bilder med klassen PdfConverter. Det gör det möjligt att konvertera varje sida i en PDF-fil till en bild, och sedan läser vi streckkodsinformationen från den konverterade bilden.

Vi kan läsa streckkoder från konverterade PDF-sidor genom att följa stegen nedan:

  1. Först laddar du ett PDF-dokument med klassen Document.
  2. Skapa sedan en instans av klassen PdfConverter.
  3. Alternativt kan du ställa in renderingsalternativ som BarcodeOptimization.
  4. Ställ sedan in bildupplösningen.
  5. Ange sedan StartPage och EndPage för att rendera en rad sidor till bilder.
  6. Anropa sedan metoden DoConvert() för att rendera valda sidor till bilder.
  7. Spara sedan bilden för att streama i en loop.
  8. Skapa sedan en instans av klassen BarCodeReader med stream-objektet.
  9. Efter det, anropa ReadBarCodes()-metoden för att få BarCodeResult-objektet.
  10. Visa slutligen streckkodsinformationen.

Följande kodexempel visar hur man konverterar PDF-sidor till bilder och läser streckkoder med C#.

// Följande kodexempel visar hur du konverterar PDF-sidor till bilder med PDF Convertor och läser streckkoder med C#.
// Sökvägen till dokumentet
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Ladda ett PDF-dokument
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Initiera en PdfConvertor
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);

// Ställ in streckkodsoptimering
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// Ställ in sidupplösning
// 300 dpi är standardupplösning
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// Ställ in att alla sidor ska renderas till bilder
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// Gör valda sidor till bilderna
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // Återge aktuell sida till minnesströmbild
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // Känn igen streckkoder från den renderade bilden av sidan
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Visa resultat
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Läs streckkoder från PDF med PngDevice i C#

Här kommer en annan metod som liknar den föregående. Den enda skillnaden är att i den här metoden kommer vi att konvertera sidorna i PDF-dokumentet till bilder med klassen PngDevice i API:t. Det gör det möjligt att konvertera sidor i PDF-dokumentet till PNG-bilder.

Vi kan läsa streckkoder från konverterade PDF-sidor som PNG-bilder genom att följa stegen nedan:

  1. Först laddar du ett PDF-dokument med klassen Document.
  2. Skapa sedan en instans av klassen PngDevice.
  3. Gå sedan igenom alla sidor och anrop Process()-metoden för att rendera in i strömmen.
  4. Skapa sedan en instans av klassen BarCodeReader med stream-objektet.
  5. Efter det, anropa ReadBarCodes()-metoden för att få BarCodeResult-objektet.
  6. Visa slutligen streckkodsinformationen.

Följande kodexempel visar hur man konverterar PDF-sidor till PNG-bilder och läser streckkoder med C#.

// Följande kodexempel visar hur man konverterar PDF-sidor till bilder med PngDevice och läser streckkoder med C#.
// Sökvägen till dokumentet
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Ladda ett PDF-dokument
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Skapa PNG-enhet med 300 dpi standardupplösning
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// Fortsätt med alla PDF-sidor från sida 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Återge PDF-sida till strömmen
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

    // Känn igen streckkoden från den renderade bilden av sidan
    BarCodeReader reader = new BarCodeReader(ms);

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

Extrahera och läs streckkod från PDF med C#

Vi kan också känna igen streckkodsbilder inbäddade på PDF-sidor med klassen PdfExtractor. Det gör det möjligt att extrahera bilder från PDF, och sedan kommer vi att läsa streckkodsinformationen från den extraherade bilden.

Vi kan läsa streckkoder från de extraherade bilderna genom att följa stegen nedan:

  1. Skapa först en instans av klassen PdfExtractor.
  2. Bind sedan in PDF-dokumentet med BindPdf()-metoden.
  3. Ställ sedan in sidintervallet för bildextraktion.
  4. Anropa sedan metoden ExtractImage() för att extrahera bilderna.
  5. Spara sedan bilden för att streama i en loop.
  6. Skapa sedan en instans av klassen BarCodeReader med stream-objektet.
  7. Efter det, anropa ReadBarCodes()-metoden för att få BarCodeResult-objektet.
  8. Visa slutligen streckkodsinformationen.

Följande kodexempel visar hur man extraherar och läser en streckkodsbild från ett PDF-dokument med C#.

// Följande kodexempel visar hur man konverterar PDF-sidor till bilder med PdfExtractor och läser streckkoder med C#.
// Sökvägen till dokumentet
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Bind ett PDF-dokument
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);

// Ställ in sidintervall för bildextraktion
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

// Extrahera bilderna
pdfExtractor.ExtractImage();

// Spara bilder för att streama i en slinga
while (pdfExtractor.HasNextImage())
{
  // Spara bilden för att streama
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // Känn igen streckkoderna från bildströmmen ovan
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

Hitta och läs streckkodsbilder från PDF med C#

Vi kan också hitta och extrahera streckkodsbilder från PDF-dokument med klassen ImagePlacementAbsorber. Den representerar ett absorberande objekt av bildplaceringsobjekt. Den utför en sökning av bildanvändningar och ger tillgång till sökresultat via ImagePlacements-samlingen. Denna metod hjälper till att känna igen streckkoder med originalupplösning. Det kanske inte känner igen vektorformat korrekt.

Vi kan hitta och läsa streckkoder från PDF-dokumenten genom att följa stegen nedan:

  1. Först laddar du ett PDF-dokument med klassen Document.
  2. Skapa sedan en instans av klassen ImagePlacementAbsorber.
  3. Anropa sedan metoden Visit() för varje sida i en loop.
  4. Gå sedan igenom alla bilder som finns i ImagePlacements-samlingen.
  5. Spara sedan bilden i minnesströmmen.
  6. Skapa sedan en instans av klassen BarCodeReader med stream-objektet.
  7. Efter det, anropa ReadBarCodes()-metoden för att få BarCodeResult-objektet.
  8. Visa slutligen streckkodsinformationen.

Följande kodexempel visar hur du hittar och läser streckkodsbilder från en PDF med C#.

// Detta kodexempel visar hur man läser en streckkod från ett PDF-dokument med ImagePlacementAbsorber.
// Sökvägen till dokumentet
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Ladda ett PDF-dokument
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

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

// Bearbeta alla PDF-sidor i dokumentet från sida 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Besök sidan skapa en bildextraktor
    imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);

    // Extrahera alla bilder från PDF-sidan
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // Konvertera en bild från PDF-sidan till strömmen
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // Känn igen streckkoden från den extraherade bilden av sidan
        BarCodeReader reader = new BarCodeReader(ms);

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

Skaffa en gratis licens

Du kan få en gratis tillfällig licens för att prova biblioteken utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har vi lärt oss hur man läser streckkoder från PDF-dokument i C#. Vi har också sett olika tillvägagångssätt och metoder för att extrahera bilder från ett PDF-dokument och avkoda de inbäddade streckkoderna programmatiskt. Dessutom kan du lära dig mer om API:erna med hjälp av dokumentationen för Aspose.BarCode och dokumentationen för Aspose.PDF. I händelse av oklarheter, var god kontakta oss på vårt forum.

Se även