Leggi il codice a barre da PDF in Java

PDF documenti come fatture, ricevute o rapporti possono contenere informazioni codificate sotto forma di codice a barre. Siamo in grado di rilevare, identificare e leggere i codici a barre incorporati nei documenti PDF in modo programmatico. In questo articolo impareremo come leggere un codice a barre da un documento PDF utilizzando Java. Inoltre, impareremo come estrarre immagini di codici a barre da documenti PDF in Java.

Questo articolo tratterà i seguenti argomenti:

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

API Java per leggere codici a barre da PDF

Per leggere un codice a barre da un documento PDF, seguiremo una procedura in due fasi. In primo luogo, utilizzeremo l’API Aspose.PDF for Java per caricare un documento PDF e renderizzare le sue pagine in immagini raster. Successivamente, leggeremo il codice a barre dalle immagini renderizzate utilizzando l’API Aspose.BarCode for Java.

Si prega di scaricare il JAR delle API o aggiungere la seguente configurazione pom.xml in un’applicazione Java basata su 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>

Leggi il codice a barre da PDF utilizzando Java

L’API Aspose.PDF fornisce la classe Document che rappresenta un documento PDF. Il metodo convertToPNGMemoryStream() dell’API esegue il rendering di una pagina PDF in un flusso di immagini nell’array byte[]. L’API Aspose.BarCode fornisce la classe BarCodeReader che ci consente di eseguire operazioni readBarCodes per rilevare un codice 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 ed eseguire il rendering nello stream.
  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 utilizzando Java.

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

// Carica un documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Procedi su tutte le pagine PDF a partire da pagina 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Eseguire il rendering della pagina PDF nello stream
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // Riconosci i codici a barre dal flusso di pagine
    BarCodeReader reader = new BarCodeReader(stream);

    // Mostra i risultati
  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

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

Converti PDF in immagini e leggi codici a barre utilizzando Java

Possiamo anche leggere un codice a barre dal documento PDF convertendo le pagine PDF in immagini. La classe PdfConverter dell’API consente di convertire ogni pagina di un file PDF in un’immagine. Successivamente, leggeremo le informazioni sul 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 usando setBarcodeOptimization().
  4. Quindi, imposta la risoluzione dell’immagine.
  5. Quindi, specifica un intervallo di pagine di cui eseguire il rendering in immagini utilizzando setStartPage() e setEndPage().
  6. Quindi, chiama il metodo doConvert() per eseguire il rendering delle pagine selezionate in immagini.
  7. Quindi, salva le immagini in un ciclo.
  8. Quindi, crea un’istanza della classe BarCodeReader con il percorso del file di immagine salvato.
  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 utilizzando Java.

// L'esempio di codice seguente mostra come convertire le pagine PDF in immagini con PDF Converter e leggere i codici a barre.
// Il percorso del documento
String folderPath = "C:\\Files\\BarCode\\";

// Inserisci il percorso del file
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Carica un documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

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

// Imposta l'ottimizzazione del codice a barre
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// Imposta la risoluzione della pagina
// 300 dpi è una risoluzione standard
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// Imposta tutte le pagine per il rendering in immagini
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// Rendering delle pagine selezionate nelle immagini
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // Rendering della pagina corrente sull'immagine
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

    // Riconosci i codici a barre dall'immagine di rendering della pagina
    BarCodeReader reader = new BarCodeReader(strBarCodeImage);

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

Estrai e leggi codici a barre da PDF utilizzando Java

Allo stesso modo, 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 in un ciclo.
  6. Quindi, crea un’istanza della classe BarCodeReader con il percorso dell’immagine.
  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 utilizzando Java.

// L'esempio di codice seguente mostra come convertire le pagine PDF in immagini con PdfExtractor e leggere i codici a barre.
// Il percorso del documento
String folderPath = "C:\\Files\\BarCode\\";

// File di input
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Associa un documento PDF
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);

// Imposta l'intervallo di pagine per l'estrazione dell'immagine
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

// Estrarre le immagini
pdfExtractor.extractImage();

int imageCount = 1;

// Salva le immagini per lo streaming in un ciclo
while (pdfExtractor.hasNextImage())
{
  // Salva immagine
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // Riconosci i codici a barre dall'immagine
  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(("-------------------------------"));
  }
}

Leggi il codice a barre da PDF usando PngDevice in Java

Possiamo anche leggere i codici a barre convertendo le pagine del documento PDF in immagini PNG utilizzando la classe PngDevice dell’API. Fornisce il metodo process(Page page, OutputStream output) che converte la pagina in PNG e la salva nel flusso di output. Il metodo processToBufferedImage(Page page) di questa classe converte la pagina in BufferedImage.

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 processToBufferedImage() per eseguire il rendering nell’immagine.
  4. Quindi, crea un’istanza della classe BarCodeReader con l’oggetto BufferedImage.
  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 pagine PDF e leggere codici a barre utilizzando Java.

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

// Carica un documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Crea un dispositivo PNG con una risoluzione standard di 300 dpi
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));

// Procedi su tutte le pagine PDF a partire da pagina 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Eseguire il rendering della pagina PDF sull'immagine memorizzata nel buffer
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

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

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

Trova e leggi immagini di codici a barre da PDF utilizzando Java

Possiamo trovare ed estrarre immagini di codici a barre da documenti PDF utilizzando la classe ImagePlacementAbsorber. Esegue una ricerca sull’utilizzo delle immagini e fornisce l’accesso ai risultati della ricerca tramite la raccolta ImagePlacements. Questo metodo permette di riconoscere i codici a barre con la risoluzione originale. L’unico inconveniente è che 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 utilizzando Java.

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

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

// Elabora tutte le pagine PDF nel documento a partire dalla pagina 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Visita la pagina crea un estrattore di immagini
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // Estrai tutte le immagini dalla pagina PDF
    for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // Eseguire il rendering della pagina PDF nello stream
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // Riconosci il codice a barre dallo stream della pagina
      BarCodeReader reader = new BarCodeReader(stream);

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

Ottieni una licenza gratuita

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

Conclusione

In questo articolo abbiamo imparato

  • come rilevare e leggere codici a barre da documenti PDF;
  • vari metodi per estrarre immagini da un documento PDF;
  • per decodificare il codice a barre incorporato in Java.

Oltre a leggere un codice a barre da PDF in Java, 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 di supporto gratuito.

Guarda anche