Číst čárový kód z PDF v Javě

PDF dokumenty, jako jsou faktury, účtenky nebo zprávy, mohou obsahovat zakódované informace ve formě čárového kódu. Můžeme programově detekovat, identifikovat a číst čárové kódy vložené do dokumentů PDF. V tomto článku se naučíme, jak číst čárový kód z dokumentu PDF pomocí Java. Navíc se naučíme, jak extrahovat obrázky čárových kódů z dokumentů PDF v Javě.

Tento článek se bude týkat následujících témat:

  1. Java API pro čtení čárových kódů z PDF
  2. Přečíst čárový kód z PDF
  3. Převést PDF na obrázek a přečíst čárový kód
  4. Extrahovat a přečíst čárový kód z PDF
  5. Přečíst čárový kód z PDF pomocí PngDevice
  6. Najít a přečíst obrázek čárového kódu z PDF

Java API pro čtení čárových kódů z PDF

Chcete-li přečíst čárový kód z dokumentu PDF, budeme postupovat ve dvou krocích. Nejprve použijeme API Aspose.PDF for Java k načtení dokumentu PDF a vykreslení jeho stránek do rastrových obrázků. Poté načteme čárový kód z vykreslených obrázků pomocí Aspose.BarCode for Java API.

stáhněte si JAR rozhraní API nebo přidejte následující konfiguraci pom.xml do Java aplikace založené na Maven.

<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>

Čtení čárového kódu z PDF pomocí Java

Aspose.PDF API poskytuje třídu Document, která představuje dokument PDF. Metoda convertToPNGMemoryStream() rozhraní API vykreslí stránku PDF do obrazového proudu v poli byte[]. Aspose.BarCode API poskytuje třídu BarCodeReader, která nám umožňuje provádět operace readBarCodes k detekci čárového kódu. Třída BarCodeResult ukládá zjištěné informace o čárovém kódu, jako je typ čárového kódu, text kódu, region a další parametry.

Obrázky čárových kódů vložené na kteroukoli stránku dokumentu PDF můžeme číst podle následujících kroků:

  1. Nejprve načtěte dokument PDF pomocí třídy Document.
  2. Dále projděte všechny stránky a vykreslete je do streamu.
  3. Poté vytvořte instanci třídy BarCodeReader s objektem proudu.
  4. Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
  5. Nakonec ukažte informace o čárovém kódu.

Následující příklad kódu ukazuje, jak číst čárový kód z dokumentu PDF pomocí Java.

// Tento příklad kódu ukazuje, jak číst čárový kód z dokumentu PDF pomocí Java.
// Cesta k dokumentu
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Načtěte dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Pokračujte všemi stránkami PDF od stránky 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Vykreslit stránku PDF do streamu
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // Rozpoznejte čárové kódy ze streamu stránky
    BarCodeReader reader = new BarCodeReader(stream);

    // Ukázat výsledky
 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

stáhněte si vstupní dokument PDF s čárovým kódem použitý v tomto příspěvku na blogu.

Převod PDF na obrázek a čtení čárových kódů pomocí Java

Můžeme také přečíst čárový kód z dokumentu PDF převedením stránek PDF na obrázky. Třída PdfConverter API umožňuje převést každou stránku souboru PDF na obrázek. Poté načteme informace o čárovém kódu z převedeného obrázku.

Čárové kódy z převedených stránek PDF můžeme číst podle následujících kroků:

  1. Nejprve načtěte dokument PDF pomocí třídy Document.
  2. Dále vytvořte instanci třídy PdfConverter.
  3. Volitelně nastavte možnosti vykreslování pomocí setBarcodeOptimization().
  4. Poté nastavte rozlišení obrázku.
  5. Dále určete rozsah stránek, které se mají vykreslit do obrázků, pomocí setStartPage() a setEndPage().
  6. Poté zavolejte metodu doConvert() k vykreslení vybraných stránek do obrazů.
  7. Dále uložte obrázky do smyčky.
  8. Poté vytvořte instanci třídy BarCodeReader s cestou k uloženému souboru obrázku.
  9. Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
  10. Nakonec zobrazte informace o čárovém kódu.

Následující příklad kódu ukazuje, jak převést stránky PDF na obrázky a číst čárové kódy pomocí Java.

// Následující příklad kódu ukazuje, jak převést stránky PDF na obrázky pomocí PDF Convertor a číst čárové kódy.
// Cesta k dokumentu
String folderPath = "C:\\Files\\BarCode\\";

// Vstupní cesta k souboru
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Načtěte dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

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

// Nastavte optimalizaci čárového kódu
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// Nastavte rozlišení stránky
// 300 dpi je standardní rozlišení
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// Nastavte všechny stránky na vykreslení do obrázků
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// Vykreslete vybrané stránky do obrázků
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // Vykreslit aktuální stránku do obrázku
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

    // Rozpoznejte čárové kódy z vykresleného obrázku stránky
    BarCodeReader reader = new BarCodeReader(strBarCodeImage);

    // Ukázat výsledky
   for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Extrahujte a čtěte čárový kód z PDF pomocí Java

Podobně můžeme také rozpoznat obrázky čárových kódů vložené na stránky PDF pomocí třídy PdfExtractor. Umožňuje extrahovat obrázky z PDF a poté z extrahovaného obrázku načteme informace o čárovém kódu.

Čárové kódy můžeme číst z extrahovaných obrázků podle následujících kroků:

  1. Nejprve vytvořte instanci třídy PdfExtractor.
  2. Dále svažte vstupní dokument PDF pomocí metody bindPdf().
  3. Poté nastavte rozsah stránek pro extrakci obrázku.
  4. Dále zavolejte metodu extractImage() k extrahování obrázků.
  5. Poté uložte obrázek do smyčky.
  6. Dále vytvořte instanci třídy BarCodeReader s cestou k obrázku.
  7. Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
  8. Nakonec ukažte informace o čárovém kódu.

Následující příklad kódu ukazuje, jak extrahovat a číst obrázek čárového kódu z dokumentu PDF pomocí Java.

// Následující příklad kódu ukazuje, jak převést stránky PDF na obrázky pomocí PdfExtractor a číst čárové kódy.
// Cesta k dokumentu
String folderPath = "C:\\Files\\BarCode\\";

// Vložte soubor
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Svažte dokument PDF
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);

// Nastavte rozsah stránek pro extrakci obrázků
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

// Extrahujte obrázky
pdfExtractor.extractImage();

int imageCount = 1;

// Uložte obrázky pro streamování ve smyčce
while (pdfExtractor.hasNextImage())
{
  // Uložit obrázek
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // Rozpoznejte čárové kódy z obrázku
  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(("-------------------------------"));
  }
}

Čtení čárového kódu z PDF pomocí PngDevice v Javě

Čárové kódy můžeme také číst převedením stránek PDF dokumentu na obrázky PNG pomocí třídy PngDevice API. Poskytuje metodu process(Page page, OutputStream output), která převede stránku na PNG a uloží ji do výstupního proudu. Metoda processToBufferedImage(Page page) této třídy převede stránku na BufferedImage.

Čárové kódy z převedených stránek PDF můžeme číst jako obrázky PNG podle následujících kroků:

  1. Nejprve načtěte dokument PDF pomocí třídy Document.
  2. Dále vytvořte instanci třídy PngDevice.
  3. Poté projděte všechny stránky a zavolejte metodu processToBufferedImage() k vykreslení obrázku.
  4. Dále vytvořte instanci třídy BarCodeReader s objektem BufferedImage.
  5. Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
  6. Nakonec ukažte informace o čárovém kódu.

Následující příklad kódu ukazuje, jak převádět stránky PDF a číst čárové kódy pomocí Java.

// Následující příklad kódu ukazuje, jak převést stránky PDF na obrázky pomocí PngDevice a číst čárové kódy.
// Cesta k dokumentu
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Načtěte dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Vytvořte zařízení PNG se standardním rozlišením 300 dpi
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));

// Pokračujte všemi stránkami PDF od stránky 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Vykreslete stránku PDF do obrazu ve vyrovnávací paměti
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

    // Rozpoznejte čárový kód z vykresleného obrázku stránky
    BarCodeReader reader = new BarCodeReader(img);

    // Ukázat výsledky
   for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Najděte a čtěte obrázky čárových kódů z PDF pomocí Java

Pomocí třídy ImagePlacementAbsorber můžeme najít a extrahovat obrázky čárových kódů z dokumentů PDF. Provádí vyhledávání využití obrázků a poskytuje přístup k výsledkům vyhledávání prostřednictvím kolekce ImagePlacements. Tato metoda umožňuje rozpoznání čárových kódů s původním rozlišením. Jedinou nevýhodou je, že nemusí správně rozpoznat vektorové formáty.

Čárové kódy z dokumentů PDF můžeme najít a přečíst podle následujících kroků:

  1. Nejprve načtěte dokument PDF pomocí třídy Document.
  2. Dále vytvořte instanci třídy ImagePlacementAbsorber.
  3. Poté zavolejte metodu visit() pro každou stránku ve smyčce.
  4. Dále projděte všechny obrázky nalezené v kolekci ImagePlacements.
  5. Poté uložte obrázek do paměťového toku.
  6. Dále vytvořte instanci třídy BarCodeReader s objektem stream.
  7. Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
  8. Nakonec ukažte informace o čárovém kódu.

Následující příklad kódu ukazuje, jak najít a přečíst obrázky čárových kódů z PDF pomocí Java.

// Tento příklad kódu ukazuje, jak číst čárový kód z dokumentu PDF pomocí ImagePlacementAbsorber.
// Cesta k dokumentu
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Načtěte dokument PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

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

// Zpracujte všechny stránky PDF v dokumentu počínaje stranou 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Navštivte stránku vytvoření extraktoru obrázků
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // Extrahujte všechny obrázky ze stránky PDF
   for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // Vykreslit stránku PDF do streamu
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // Rozpoznejte čárový kód ze streamu stránky
      BarCodeReader reader = new BarCodeReader(stream);

      // Ukázat výsledky
     for (BarCodeResult result : reader.readBarCodes()) {
        System.out.println("CodeText: " + result.getCodeText());
        System.out.println("Symbology type: " + result.getCodeType());
        System.out.println(("-------------------------------"));
      }
    }
}

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet knihovny bez omezení hodnocení.

Závěr

V tomto článku jsme se poučili

  • jak detekovat a číst čárové kódy z dokumentů PDF;
  • různé metody pro extrahování obrázků z dokumentu PDF;
  • k dekódování vloženého čárového kódu v Javě.

Kromě čtení čárového kódu z PDF v Javě se můžete dozvědět více o API pomocí dokumentace pro Aspose.BarCode a dokumentace pro Aspose.PDF. V případě jakýchkoliv nejasností nás prosím neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také