Intermec PM4i ラベル プリンターの使用経験はジェット コースターのようでしたが、実際に機能するアプリがあることはわかっています。
generictext ドライバーを介して Windows プリンター パイプラインを試しました。メモ帳からでも機能しますが、コーナーケースはほとんどありません。
非常に長いテキスト行でQRCODE画像を試すまで、メモ帳から直接印刷することはうまくいきます。画像が印刷されませんでした。qrcode テキストを短い数文字にすると、同じスクリプトが正常に機能しました。
INPUT OFF
NASC 1252
BF OFF
FT "Swiss 721 Bold BT",12,0,100
PP 50,500:PT "Text line goes here"
PP 400,400:AN 7:BARSET "QRCODE",1,1,7,2,4
PB "ABC123 aabbcc....very long text goes here...I mean about 200 chars or more"
PRINTFEED
メモ帳のように、テキストが右側の境界線にカットされ、コマンド文字列が壊れていました。印刷設定を A3-landscape にして、長いテキストを受け入れましたが、それでもすべてのユースケースには十分ではありませんでした。
すべてのプリンタには物理的な最大印刷幅がありますが、フィンガープリント/ダイレクト プロトコル スクリプト ファイルでは考慮する必要はありません。結局のところ、このテキストをそのまま印刷するのではなく、コマンドをプリンターに送信します。
私の解決策は、生の TCP ソケットを 11.22.33.44:9100 アドレスに開き、NL(#10) で終了するテキスト行を書き込む Java アプリケーションを作成することでした。正常に動作します。私が行ったもう 1 つのヘルパー ツールは、Windows プリンター オブジェクトから IP アドレスを読み取る Delphi app.exe でした。Excelアプリケーションから「直接」ラベル印刷を提出できます。
- エンド ユーザーが Excel データ行を編集し、[PRINT LABELS] ボタンをクリックします。
- vba マクロは、${FIELD1} の検索と置換の置換を使用して指紋テンプレート ファイルを解析します
- ファイルは %wintemp%/intermec_script.txt フォルダーに書き込まれます
- app.exe を呼び出して、ユーザーが選択したプリンターの IP アドレスを読み取ります
- Java アプリを呼び出して、intermec_script.txt を IP:PORT ソケットに送信します。
Delphi で同じソケット サブミット アプリを作成して、javavm の依存関係を削除する必要がありますが、私のユース ケースではこのソリューションの方が高速でした。私は、Delphi のスキル レベルよりも Java に精通しています。