1
1

More than 1 year has passed since last update.

JavaでWord、Excel、PowerPoint、PDFからバーコードを読み取る方法

Last updated at Posted at 2023-01-05

バーコードは、バーとスペース(またはドット)で構成され、数字や文字を機械で読み取ることができる表現方法である。今日、バーコードは食料品店、医院、法律事務所、郵便局、小売店など、数え切れないほど広く使われている。Code39、Code128、PDF417、DataMatrix、QRなどのバーコードを様々な種類の文書(Word、Excel、PowerPoint、PDFなど)から読み取ることができることは、実に有益なことであると言えます。
今回は、Spire.Office for Javaを使って、JavaでMS Office文書やPDFからバーコードを読み取る方法について紹介します。このライブラリでは、よく見かける40種類以上の1次元・2次元バーコードがサポートされています。

【依存関係の追加】

この方法は、Spire.Office for Javaが必要ですので、先にjarファイルをインポートしてください。

1. Maven

Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.office</artifactId>
        <version>7.12.4</version>
    </dependency>
</dependencies>

2. 公式サイトよりJarファイルをダウンロード

まず、Spire.Doc for Javaの公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Doc.jarファイルを依存関係としてプロジェクトにインポートしてください。

JavaでWordからバーコードを読み取る

Spire.Office for Javaを使用して、Wordファイルの特定のページからバーコードを読み取る手順を説明します。

  • Documentクラスのオブジェクトを作成します。
  • Document.loadFromFile() メソッドを使用して、バーコードを含むサンプル Word ファイルを読み込みます。
  • Document.saveToImages(int pageIndex, ImageType type) メソッドを使用して、1ページ目を画像に変換します。
  • BarcodeScanner.scan() メソッドを使用して画像からバーコードを読み取り、結果をString配列で返します。
  • 結果をTXTファイルに書き出す。

Java

import com.spire.barcode.BarcodeScanner;
import com.spire.doc.Document;
import com.spire.doc.documents.ImageType;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class readBarcodeFromWord {

    public static void main(String[] args) throws IOException {

        //Documentクラスのオブジェクトを作成する
        Document doc = new Document();

        //Wordドキュメントを読み込む
        doc.loadFromFile("バーコード.docx");

        //1ページ目を画像に変換する
        BufferedImage image = doc.saveToImages(0, ImageType.Bitmap);

        //画像からバーコードを読み取る
        String[] data = BarcodeScanner.scan(image);

        //結果をプリントアウトする
        for (int i = 0; i < data.length; i++)
        {
            Files.write(Paths.get("スキャン結果.txt"), data[i].getBytes());
        }
    }
}

2023-01-05_165859.png

JavaでExcelからバーコードを読み取る

以下は、Spire.Office for Javaを使用して、ワークシートからバーコードを読み取る手順です。

  • Workbookクラスのオブジェクトを作成します。
  • Workbook.loadFromFile() メソッドを使用して、バーコードを含むExcelファイルを読み込みます。
  • Workbook.getWorksheets().get() メソッドを使用して、1つ目のワークシートを取得します。
  • XlsWorksheet.saveToImage(int firstRow, int firstColumn, int lastRow, int lastColumn) メソッドを使用して、ワークシートの選択範囲を画像に変換します。
  • BarcodeScanner.scan() メソッドを使用してイメージからバーコードをスキャンし、結果をString配列で返します。
  • 結果をTXTファイルに書き出す。

Java

import com.spire.barcode.BarcodeScanner;
import com.spire.xls.CellRange;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class readBarcodeFromExcel {

    public static void main(String[] args) throws IOException {

        //Workbook クラスのオブジェクトを作成する
        Workbook wb = new Workbook();

        //Excelファイルを読み込む
        wb.loadFromFile("バーコード.xlsx");

        //1つ目のワークシートを取得する
        Worksheet sheet = wb.getWorksheets().get(0);

        //1つ目のワークシートから指定されたすべてのセル範囲を取得する
        CellRange cellRange = sheet.getAllocatedRange();

        //セル範囲を画像に変換する
        BufferedImage image =  sheet.saveToImage(1,1,cellRange.getLastRow(),cellRange.getLastColumn());

        //画像からバーコードを読み取る
        String[] data = BarcodeScanner.scan(image);

        //結果をTXTファイルに書き出す
        for (int i = 0; i < data.length; i++)
        {
            Files.write(Paths.get("スキャン結果.txt"), data[i].getBytes());
        }
    }
}

2023-01-05_171726.png

JavaでPowerPointからバーコードを読み取る

PowerPointのスライドからバーコードを読み取る手順は、以下の通りです。

  • Presentationクラスのオブジェクトを作成します。
  • Presentation.loadFromFile() メソッドを使用して PowerPoint ファイルを読み込みます。
  • Presentation.getSlides().get() メソッドを使用して、1つ目のスライドを取得します。
  • ISlide.savAsImage() メソッドを使用してスライドを画像に変換します。
  • BarcodeScanner.scan() メソッドを使用して画像からバーコードをスキャンし、結果を String 配列で返します。
  • 結果をTXTファイルに書き出す。

Java

import com.spire.barcode.BarcodeScanner;
import com.spire.presentation.ISlide;
import com.spire.presentation.Presentation;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

public class readBarcodeFromPowerPoint {

    public static void main(String[] args) throws Exception {

        //Presentationクラスのオブジェクトを作成する
        Presentation presentation = new Presentation();

        //PowerPointファイルを読み込む
        presentation.loadFromFile("バーコード.pptx");

        //1つ目のスライドを取得する
        ISlide slide = presentation.getSlides().get(0);

        //1つ目のスライドを画像として保存する
        BufferedImage image = slide.saveAsImage();

        //画像をストリームに変換する
        InputStream imageStream = bufferedImageToInputStream(image);

        //画像ストリームからバーコードを読み取る
        String[] data = BarcodeScanner.scan(imageStream);

        //結果をTXTファイルに書き出す
        for (int i = 0; i < data.length; i++) {
            Files.write(Paths.get("スキャン結果.txt"), data[i].getBytes());
        }
    }
    public static InputStream bufferedImageToInputStream(BufferedImage image) throws IOException {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(image, "png", os);
        InputStream input = new ByteArrayInputStream(os.toByteArray());
        return input;
    }
}

2023-01-05_172704.png

JavaでPDFからバーコードを読み取る

Spire.Office for Javaを使用して、PDFページからバーコードを読み取る手順を説明します。

  • PdfDocumentクラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用してPDFファイルを読み込みます。
  • PdfDocument.saveAsImage(int pageIndex, PdfImageType type) メソッドを使用して、1ページ目を画像に変換します。
  • BarcodeScanner.scan() メソッドを使用して画像からバーコードをスキャンし、結果を String 配列で返します。
  • 結果をTXTファイルに書き出す。

Java

import com.spire.barcode.BarcodeScanner;
import com.spire.license.LicenseProvider;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.graphics.PdfImageType;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class readBarcodeFromPdf {

    public static void main(String[] args) throws IOException {

        //PdfDocument クラスのオブジェクトを作成する
        PdfDocument doc = new PdfDocument();

        //PDFファイルを読み込む
        doc.loadFromFile("バーコード.pdf");

        //1ページ目を画像に変換する
        BufferedImage image = doc.saveAsImage(0, PdfImageType.Bitmap);

        //画像からバーコードを読み取る
        String[] data = BarcodeScanner.scan(image);

        //結果をTXTファイルに書き出す
        for (int i = 0; i < data.length; i++)
        {
            Files.write(Paths.get("スキャン結果.txt"), data[i].getBytes());
        }
    }
}

2023-01-05_173514.png

この記事では、Officeファイルからバーコードを読み取る方法を紹介します。Spire.Office for Javaには、この他にもOffice文書を操作するための様々な機能があります。これらの機能に興味がある方は、Spire.Office Forumで詳細をご覧ください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1