Javaを使用してバーコードラベルを印刷するための正しい方向を誰かが指摘できますか? バーベキュー ライブラリ ( http://barbecue.sourceforge.net/ ) を使用してバーコードを画像として生成できますが、画像 (および人間が判読できるキャプション) を印刷用の Avery ドキュメント テンプレートに入れる方法が必要です。
6 に答える
次の 2 つの理由から、バーベキューではなく、barcode4j ライブラリを使用することをお勧めします。
バーベキュー バーコード オブジェクトは、Java UI コンポーネントに不必要に結合されています (たとえば、Barcode クラスは JComponent を拡張します)。バッチやコマンドラインベースのアプリケーションなど、Java UI が使用されていない場合、これにより不要な依存関係が作成されます。Java UI でバーコード クラスを使用する場合は、継承ではなく集約を使用する必要がありました。
Barcode4J は現在サポートされているようです - バージョン 2.0 がリリースされ、著作権の日付は 2012 年です
次に、バーコードをプリンターが理解できる形式に変換するという問題があります。これについては、openlabelprint.org (私が書いたものです!) をお勧めします。これは、barcode4j を使用し、以下を提供する別のオープン ソース プロジェクトです。
SVG (Scalable Vector Graphics - オープンな w3c 標準) を使用してラベル レイアウトを定義する機能
バーコード4j(およびSVGの周囲のラベルレイアウト)からSVGのビットマップへのラスタライゼーション(openlabelprintは、ラスタライゼーションおよび他のSVGタスクに優れたApache SVG Batik Javaライブラリを適用します)
ZPL 低レベル言語を使用した Zebra プリンタでのビットマップの印刷。openlabelprint には、png ビットマップを ZPL に変換し、これを標準の Java プリンター システムを介して Zebra プリンターに送信するユーティリティが組み込まれています。また、openlabelprint は他のプリンター言語用に拡張するための API を提供しますが、ZPL は一部の非 Zebra ブランドでサポートされています。
iText ライブラリは、考えられるほぼすべての種類のバーコードをサポートしています。PDF を生成して保存するか、内部で印刷することができます。
Java を使用してバーコードを印刷していますが、バーコードを印刷する機能があらかじめプログラムされているプリンターを使用しています。したがって、印刷するコードをプリンターに伝えるだけで、残りはプリンターが行います。プリンターにお金を払っても構わないと思っているなら、それはあなたの時間を節約するかもしれません.
これはあなたにとって役立つかもしれないし、役に立たないかもしれませんが、私はそれについて言及したいと思いました.
Avery ラベル ページを定規で測定し、次に Java コードで、完全なレター/A4/その他のページを作成して印刷し、そのページのバーコード イメージを適切な場所にオフセットする必要があると思います。定規であなたの測定。
JZebraを試してみてください。これはアプレットであり、あなたにとって良い出発点です。Javaソースコードを見てください。
http://code.google.com/p/jzebra/
シマウマの場合、この簡単なガイドが役立ちます。このゼブラコマンドについて
N
q609
Q203,26
B26,26,0,UA0,2,2,152,B,"777777"
A253,56,0,3,1,1,N,"JHON3:16"
A253,26,0,3,1,1,N,"JESUSLOVESYOU"
A253,86,0,3,1,1,N,"TEST TEST TEST"
A253,116,0,3,1,1,N,"ANOTHER TEST"
A253,146,0,3,1,1,N,"SOME LETTERS"
P1,1
JZebraで
var applet = document.jzebra;
if (applet != null) {
applet.append("N\n");
applet.append("q609\n");
applet.append("Q203,26\n");
applet.append("B26,26,0,UA0,2,2,152,B,\"777777\"\n");
applet.append("A253,56,0,3,1,1,N,\"JHON3:16\"\n");
applet.append("A253,26,0,3,1,1,N,\"JESUSLOVESYOU\"\n");
applet.append("A253,86,0,3,1,1,N,\"TEST TEST TEST\"\n");
applet.append("A253,116,0,3,1,1,N,\"ANOTHER TEST\"\n");
applet.append("A253,146,0,3,1,1,N,\"SOME LETTERS\"\n");
applet.append("P1,1\n");}
これを明確にする:
EPLは、1行に1つのコマンドです。コマンドは、コマンドID(通常は文字)で始まり、その後にそのコマンドに固有のパラメーターのコンマ区切りリストが続きます。これらの各コマンドは、EPL2プログラミングドキュメントで調べることができます。上記の例のコマンドの英語版は次のとおりです。
- 最初の改行を送信すると、以前に中断されたコマンドが送信されることが保証されます。
- [N]画像バッファをクリアします。これは重要なステップであり、通常、EPLドキュメントの最初のコマンドである必要があります。前のジョブがプリンタをどのような状態にしたかを誰が知っていますか。
- [q]ラベル幅を609ドットに設定します(3インチラベルx 203 dpi = 609ドット幅)。
- [Q]ラベルの高さを203ドット(1インチのラベル)に設定し、ラベル間に26ドットのギャップを設定します。(プリンターはおそらく自動検知しますが、これは問題ありません。)
- [B] x = 26ドット(1/8インチ)、y = 26ドット(1/8インチ)、2ドットの狭いバー幅で値「777777」のUPC-Aバーコードを描画し、152ドットにします( 3/4インチ)高。(ラベル座標系の原点は、ラベルの左上隅です。)
- [A]テキスト「JESUSLOVESYOU」をx=253ドット(3/4インチ)、y = 26ドット(1/8インチ)でプリンタフォント「3」で描画します。通常の水平および垂直スケーリングで、派手な白抜きはありません。 -黒の効果。
すべてのthaA開始行は類似しています。10.[P]1つのラベルを1部印刷します。
「バーベキュー」で得た画像を印刷してみましたか?