Java向けバーコード生成ライブラリ

2020/05/13

テスト用にバーコードを生成することになったのでJavaのライブラリを調べてみました。

あまり種類はなくて、Barcode4J、ZXing、Barbecueの3択になるようです。Barbecueはさすがに古過ぎるのでBarcode4JとZXingの2択ですかね。

ざっと見てみた限りではシンプルにバーコード出力するだけだったらどれも大差ありません。規格面でも、UPC, EAN, Code 39, ITF, NW-7(Codabar) あたりのメジャーどころはどのライブラリも概ね対応してます。

なので、対応している(マイナーな)規格、細かいオプションの使い勝手、依存ライブラリあたりが選定ポイントですかね。

バーコードは規格モノでころころ変わらないからか、ライブラリがある程度成熟すると開発が止まるようです。現在アクティブに開発されているものはありません。なので将来性は選定ポイントになりにくいかと。ZXingだけはメンテナンス的な修正はされているので、Javaのバージョンアップ追従とかが気になるならZXingがよさそう。

Barcode4J

  • Barcode4J
  • Apache License, version 2.0
  • 2010年で開発が止まっている
  • 主な出力フォーマット:SVG、EPS、PNG、JPEG
  • バーコードにテキスト(数字)をくっつけてくれる機能がある
  • QRコード生成時は ZXing が必要
  • Code93に対応していない

ZXing

  • GitHub - zxing/zxing: ZXing (“Zebra Crossing”) barcode scanning library for Java, Android
  • Apache License, version 2.0 ‐ “Zebra Crossing” と読むらしい
  • どちらかというとバーコード読み込みライブラリとして有名だが生成機能もある
  • 最近までプロジェクトは Project in Maintenance Mode Only なので新機能追加はなさそう(バグフィックスや軽微な改善はありうる)
  • Java以外のいくつかの言語向けにもportされている
  • 生成結果は BufferedImage で受け取って、後はJava側でいい感じにする?
  • バーコードにテキスト(数字)をくっつけてくれる機能がないっぽい
  • SVGで保存したい場合は jfreesvgと組み合わせるのが定石っぽい(ただしGPL or 有償ライセンスなので要注意)

Barbecue

  • Barbecue project
  • BSD-style license
  • 2007年で開発が止まっている
  • 主な出力フォーマット:SVG、EPS、PNG、JPEG

選定結果

今回はBarcode4Jで、と思ってコード書いてる途中でCode93に対応していないことに気付き、ZXingに乗り換えました。バーコードにテキスト(数字)をつける機能がないのがちょっと痛い。

ちなみに、数個だけ生成する場合はオンラインの生成サービスがいろいろあるのでそっち使ったほうが早いです……




関連(するかもしれない)記事


おススメ