barcode_pao

クロスプラットフォーム バーコード生成ライブラリ for Flutter(C++ FFI版)

概要

barcode_pao は、C++バーコードエンジンを dart:ffi でバインディングした高速バーコード生成Flutterプラグインです。ネイティブコンパイル済みライブラリを同梱しているため、追加のコンパイル不要で動作します。

対応バーコード(18種)

1次元バーコード(11種)

  • Code39 - 英数字対応の汎用バーコード
  • Code93 - Code39の拡張版
  • Code128 - 全ASCII文字対応の高密度バーコード
  • GS1-128 - 物流・流通向けバーコード(コンビニ収納代行対応)
  • NW-7 (Codabar) - 血液銀行・宅配便向けバーコード
  • Matrix 2 of 5 - 工業用バーコード
  • NEC 2 of 5 - NECが開発した2 of 5系バーコード
  • JAN-8 - 日本の商品コード(8桁)
  • JAN-13 - 日本の商品コード(13桁)
  • UPC-A - 北米の商品コード(12桁)
  • UPC-E - UPC-Aの短縮版(8桁)

GS1 DataBar(3種)

  • GS1 DataBar 14 - 標準型(オムニ/スタック対応)
  • GS1 DataBar Limited - 限定型
  • GS1 DataBar Expanded - 拡張型(スタック対応)

2次元バーコード(3種)

  • QRコード - 日本発の2次元コード
  • DataMatrix - 工業用途の2次元コード
  • PDF417 - 運転免許証等で使用される2次元コード

特殊バーコード(1種)

  • 郵便カスタマバーコード - 日本郵便の住所表示バーコード

インストール

flutter pub add barcode_pao

使用例

QRコード生成

import 'package:barcode_pao/barcode_pao.dart';

// QRコードインスタンスを作成
final qr = QR();

// エラー訂正レベルを設定(L/M/Q/H)
qr.setErrorCorrectionLevel('H');

// Base64エンコードされた画像を取得
final base64Image = qr.draw('https://example.com', 200);

// リソースを解放
qr.dispose();

Code128バーコード生成

import 'package:barcode_pao/barcode_pao.dart';

// Code128インスタンスを作成
final code128 = Code128();

// テキスト表示を有効化
code128.setShowText(true);

// 出力フォーマットをSVGに設定
code128.setOutputFormat('svg');

// バーコード生成
final svgData = code128.draw('ABC-12345', 300, 100);

// リソースを解放
code128.dispose();

色のカスタマイズ

import 'package:barcode_pao/barcode_pao.dart';

final code39 = Code39();

// 前景色(バーの色)をRGBAで設定
code39.setForegroundColor(0, 0, 128); // 紺色

// 背景色をRGBAで設定
code39.setBackgroundColor(255, 255, 200); // 薄黄色

final base64Image = code39.draw('12345', 200, 80);
code39.dispose();

GS1-128 コンビニ収納代行バーコード

import 'package:barcode_pao/barcode_pao.dart';

final gs1 = GS1_128();
gs1.setShowText(true);

// 標準料金代理収納用バーコード
final convenienceCode = '9101234567890123456789012345678901234567890123';
final base64Image = gs1.drawConvenience(convenienceCode, 400, 100);

gs1.dispose();

郵便カスタマバーコード

import 'package:barcode_pao/barcode_pao.dart';

final yubin = YubinCustomer();

// 郵便番号 + 住所表示番号
final code = '1000001-1-2-3';
final base64Image = yubin.draw(code, 50); // 高さのみ指定

yubin.dispose();

API リファレンス

共通メソッド(全バーコードクラス)

メソッド 説明
setOutputFormat(format) 出力フォーマットを設定("png", "jpg", "svg")
setForegroundColor(r, g, b, [a]) 前景色(バーの色)を設定
setBackgroundColor(r, g, b, [a]) 背景色を設定
dispose() ネイティブリソースを解放(必須)

1次元バーコード固有メソッド

メソッド 説明
setShowText(show) バーコード下のテキスト表示
setTextFontScale(scale) テキストのフォントサイズスケール
setTextGap(scale) バーとテキストの間隔
setFitWidth(fit) 幅に合わせてバーを調整
setPxAdjustBlack(adjust) 黒バーのピクセル調整
setPxAdjustWhite(adjust) 白バーのピクセル調整
draw(code, width, height) Base64またはSVG文字列を返す

2次元バーコード固有メソッド

クラス メソッド 説明
QR setErrorCorrectionLevel(level) エラー訂正レベル(L/M/Q/H)
QR setVersion(version) バージョン(0=自動, 1-40)
QR setEncodeMode(mode) エンコードモード(NUMERIC/ALPHANUMERIC/BYTE/KANJI)
DataMatrix setCodeSize(size) シンボルサイズ("AUTO", "10x10"など)
DataMatrix setEncodeScheme(scheme) エンコードスキーム(AUTO/ASCII/C40/TEXT/X12/EDIFACT/BASE256)
PDF417 setErrorLevel(level) エラー訂正レベル(-1=自動, 0-8)
PDF417 setColumns(columns) 列数
PDF417 setRows(rows) 行数

出力フォーマット

フォーマット 説明
png PNG画像(デフォルト)
jpg / jpeg JPEG画像
svg SVGベクター画像

WASM版との違い

項目 barcode_pao (FFI) barcode_pao_wasm
実行速度 高速(ネイティブC++) やや遅い(WASM)
対応プラットフォーム Windows/macOS/Linux/iOS/Android Web専用
リソース管理 dispose() 必須 不要
用途 ネイティブアプリ Flutter Web

ライセンス

MIT License

関連パッケージ

Libraries

barcode_pao
Barcode.Flutter Plugin版 - 高速バーコード生成ライブラリ