Läs streckkod från PDF i Java

PDF dokument som fakturor, kvitton eller rapporter kan innehålla kodad information i form av en streckkod. Vi kan upptäcka, identifiera och läsa streckkoder som är inbäddade i PDF-dokument programmatiskt. I den här artikeln kommer vi att lära oss hur man läser en streckkod från ett PDF-dokument med Java. Dessutom kommer vi att lära oss hur man extraherar streckkodsbilder från PDF-dokument i Java.

Den här artikeln ska täcka följande ämnen:

  1. Java 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 streckkod
  4. Extrahera och läs streckkod från PDF
  5. Läs streckkod från PDF med PngDevice
  6. Hitta och läs streckkodsbild från PDF

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

För att läsa en streckkod från ett PDF-dokument kommer vi att följa en tvåstegsprocedur. För det första kommer vi att använda Aspose.PDF for Java API för att ladda ett PDF-dokument och rendera dess sidor till rasterbilder. Efter det kommer vi att läsa streckkoden från de renderade bilderna med Aspose.BarCode for Java API.

Vänligen antingen ladda ner JAR för API:erna eller lägg till följande pom.xml-konfiguration i en Maven-baserad Java-applikation.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-barcode</artifactId>
    <version>22.8</version>
</dependency>
    
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>22.8</version>
</dependency>

Läs streckkod från PDF med Java

Aspose.PDF API tillhandahåller klassen Document som representerar ett PDF-dokument. Metoden convertToPNGMemoryStream() för API:et renderar en PDF-sida till en bildström i byte[]-matrisen. Aspose.BarCode API tillhandahåller klassen BarCodeReader som gör det möjligt för oss att utföra readBarCodes operationer för att upptäcka en streckkod. 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 in i strömmen.
  3. Skapa sedan en instans av klassen BarCodeReader med ett strömobjekt.
  4. Efter det, anropa metoden readBarCodes() för att få BarCodeResult-objektet.
  5. Till sist, visa streckkodsinformationen.

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

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

// Ladda ett PDF-dokument
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Fortsätt med alla PDF-sidor från och med sida 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Återge PDF-sida till strömmen
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // Känn igen streckkoder från sidströmmen
    BarCodeReader reader = new BarCodeReader(stream);

    // Visa resultat
 for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}
CodeText: Aspose.Barcode Pdf417 Example
Symbology type: Pdf417
-------------------------------
CodeText: Aspose.Barcode QR Example
Symbology type: QR
-------------------------------
CodeText: Aspose.Barcode DataMatrix Example
Symbology type: DataMatrix

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

Konvertera PDF till bild och läs streckkod med Java

Vi kan också läsa en streckkod från PDF-dokumentet genom att konvertera PDF-sidor till bilder. Klassen PdfConverter i API:et gör det möjligt att konvertera varje sida i en PDF-fil till en bild. Efter det kommer vi att läsa 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 med setBarcodeOptimization().
  4. Ställ sedan in bildupplösningen.
  5. Ange sedan ett antal sidor som ska renderas till bilder med hjälp av setStartPage() och setEndPage().
  6. Anropa sedan metoden doConvert() för att rendera valda sidor till bilder.
  7. Spara sedan bilderna i en slinga.
  8. Skapa sedan en instans av klassen BarCodeReader med den sparade bildfilens sökväg.
  9. Efter det, anropa metoden readBarCodes() 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 Java.

// Följande kodexempel visar hur man konverterar PDF-sidor till bilder med PDF Converter och läser streckkoder.
// Sökvägen till dokumentet
String folderPath = "C:\\Files\\BarCode\\";

// Indatafilsökväg
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Ladda ett PDF-dokument
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Initiera en PdfConvertor
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);

// Ställ in streckkodsoptimering
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// Ställ in sidupplösning
// 300 dpi är standardupplösning
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// Ställ in att alla sidor ska renderas till bilder
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// Gör valda sidor till bilderna
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // Gör aktuell sida till bild
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

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

    // Visa resultat
   for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Extrahera och läs streckkod från PDF med Java

På samma sätt kan vi 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 i en slinga.
  6. Skapa sedan en instans av klassen BarCodeReader med bildsökvägen.
  7. Efter det, anropa metoden readBarCodes() för att få BarCodeResult-objektet.
  8. Till sist, visa streckkodsinformationen.

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

// Följande kodexempel visar hur man konverterar PDF-sidor till bilder med PdfExtractor och läser streckkoder.
// Sökvägen till dokumentet
String folderPath = "C:\\Files\\BarCode\\";

// Indatafil
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Bind ett PDF-dokument
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);

// Ställ in sidintervall för bildextraktion
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

// Extrahera bilderna
pdfExtractor.extractImage();

int imageCount = 1;

// Spara bilder för att streama i en slinga
while (pdfExtractor.hasNextImage())
{
  // Spara bild
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // Känn igen streckkoderna från bilden
  BarCodeReader reader = new BarCodeReader(strBarCodeImage);

 for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Läs streckkod från PDF med PngDevice i Java

Vi kan också läsa streckkoder genom att konvertera sidorna i PDF-dokumentet till PNG-bilder med klassen PngDevice i API:t. Den tillhandahåller metoden process(Page page, OutputStream output) som konverterar sidan till PNG och sparar den i utdataströmmen. Metoden processToBufferedImage(Page page) för denna klass konverterar sidan till BufferedImage.

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 processToBufferedImage()-metoden för att rendera bilden.
  4. Skapa sedan en instans av klassen BarCodeReader med BufferedImage-objektet.
  5. Efter det, anropa metoden readBarCodes() för att få BarCodeResult-objektet.
  6. Visa slutligen streckkodsinformationen.

Följande kodexempel visar hur man konverterar PDF-sidor och läser streckkoder med Java.

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

// Ladda ett PDF-dokument
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Skapa PNG-enhet med 300 dpi standardupplösning
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));

// Fortsätt med alla PDF-sidor från sida 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Återge PDF-sidan till den buffrade bilden
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

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

    // Visa resultat
   for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Hitta och läs streckkodsbilder från PDF med Java

Vi kan hitta och extrahera streckkodsbilder från PDF-dokument med klassen ImagePlacementAbsorber. Den utför en sökning av bildanvändning och ger tillgång till sökresultat via ImagePlacements-samlingen. Denna metod gör det möjligt att känna igen streckkoder med originalupplösning. Den enda nackdelen är att den 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 visit()-metoden 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 metoden readBarCodes() för att få BarCodeResult-objektet.
  8. Till sist, visa streckkodsinformationen.

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

// 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
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Initiera ImagePlacementAbsorber
com.aspose.pdf.ImagePlacementAbsorber imagePlacementAbsorber = new com.aspose.pdf.ImagePlacementAbsorber();

// Bearbeta alla PDF-sidor i dokumentet från sida 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Besök sidan skapa en bildextraktor
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // Extrahera alla bilder från PDF-sidan
   for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // Återge PDF-sida till strömmen
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // Känn igen streckkoden från sidströmmen
      BarCodeReader reader = new BarCodeReader(stream);

      // Visa resultat
     for (BarCodeResult result : reader.readBarCodes()) {
        System.out.println("CodeText: " + result.getCodeText());
        System.out.println("Symbology type: " + result.getCodeType());
        System.out.println(("-------------------------------"));
      }
    }
}

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 upptäcker och läser streckkoder från PDF-dokument;
  • olika metoder för att extrahera bilder från ett PDF-dokument;
  • för att avkoda den inbäddade streckkoden i Java.

Förutom att läsa en streckkod från PDF i Java, 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 är du välkommen att kontakta oss på vårt gratis supportforum.

Se även