バーコードは、バーとスペース(またはドット)で構成され、数字や文字を機械で読み取ることができる表現方法である。今日、バーコードは食料品店、医院、法律事務所、郵便局、小売店など、数え切れないほど広く使われている。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());
}
}
}
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());
}
}
}
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;
}
}
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());
}
}
}
この記事では、Officeファイルからバーコードを読み取る方法を紹介します。Spire.Office for Javaには、この他にもOffice文書を操作するための様々な機能があります。これらの機能に興味がある方は、Spire.Office Forumで詳細をご覧ください。