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:
- Java API pro čtení čárových kódů z PDF
- Přečíst čárový kód z PDF
- Převést PDF na obrázek a přečíst čárový kód
- Extrahovat a přečíst čárový kód z PDF
- Přečíst čárový kód z PDF pomocí PngDevice
- 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ů:
- Nejprve načtěte dokument PDF pomocí třídy Document.
- Dále projděte všechny stránky a vykreslete je do streamu.
- Poté vytvořte instanci třídy BarCodeReader s objektem proudu.
- Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
- 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ů:
- Nejprve načtěte dokument PDF pomocí třídy Document.
- Dále vytvořte instanci třídy PdfConverter.
- Volitelně nastavte možnosti vykreslování pomocí setBarcodeOptimization().
- Poté nastavte rozlišení obrázku.
- Dále určete rozsah stránek, které se mají vykreslit do obrázků, pomocí setStartPage() a setEndPage().
- Poté zavolejte metodu doConvert() k vykreslení vybraných stránek do obrazů.
- Dále uložte obrázky do smyčky.
- Poté vytvořte instanci třídy BarCodeReader s cestou k uloženému souboru obrázku.
- Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
- 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ů:
- Nejprve vytvořte instanci třídy PdfExtractor.
- Dále svažte vstupní dokument PDF pomocí metody bindPdf().
- Poté nastavte rozsah stránek pro extrakci obrázku.
- Dále zavolejte metodu extractImage() k extrahování obrázků.
- Poté uložte obrázek do smyčky.
- Dále vytvořte instanci třídy BarCodeReader s cestou k obrázku.
- Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
- 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ů:
- Nejprve načtěte dokument PDF pomocí třídy Document.
- Dále vytvořte instanci třídy PngDevice.
- Poté projděte všechny stránky a zavolejte metodu processToBufferedImage() k vykreslení obrázku.
- Dále vytvořte instanci třídy BarCodeReader s objektem BufferedImage.
- Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
- 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ů:
- Nejprve načtěte dokument PDF pomocí třídy Document.
- Dále vytvořte instanci třídy ImagePlacementAbsorber.
- Poté zavolejte metodu visit() pro každou stránku ve smyčce.
- Dále projděte všechny obrázky nalezené v kolekci ImagePlacements.
- Poté uložte obrázek do paměťového toku.
- Dále vytvořte instanci třídy BarCodeReader s objektem stream.
- Poté zavolejte metodu readBarCodes(), abyste získali objekt BarCodeResult.
- 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.