2

Java アプリケーションを使用して FedEx への Web サービス呼び出しを行い、ローカルの USB 接続サーマル プリンターにラベルを印刷しようとしています。応答として FedEx からバイト配列を取得し、サーマル プリンターが接続されているクライアント マシンにこれを印刷したいと考えています。

DocAttributeSet das = new HashDocAttributeSet();
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

PrintService ps = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob job = ps.createPrintJob();
Doc doc = new SimpleDoc(image, DocFlavor.BYTE_ARRAY.AUTOSENSE, das);    
job.print(doc, pras);

あなたの助けに感謝するか、解決策を見つけることができるリンクに私を提案/リダイレクトしてください。

更新: Web ベースのアプリケーションからローカルに USB 接続されたサーマル プリンターに FedEx ラベルを印刷したいと考えています。

サーバーコードを上記のように記述しましたが、ラベルをローカルで印刷する際に問題に直面しています。

上記のコードは、アプリケーション サーバーに接続されているプリンターを探しています。

クライアントが [ラベルの印刷] ボタンをクリックすると、FedEx Web サービスの呼び出しが成功し、ZPLII 形式のバイト配列が正しく返されますが、「このバイト配列をクライアント マシンにプッシュして、サーマル プリンターに印刷したい」 .

FedExからバイト配列を取得するまでは、その後、バイト配列をプリンターに戻してサーマルプリンターで印刷するために実装できるものは何もありません。

4

1 に答える 1

1

これをローカルのUSB接続サーマルプリンターに印刷するためにjZebraを使用しました

これが私のコードです。

アクションクラスでは

byte[] imageArr = ShipmentReply.getImage();
out = ServletActionContext.getResponse().getOutputStream();
out.write(imageArr);
out.flush();

jQueryで

$.post("printFedexLabel", function(imageArr){
    printZebra(imageArr);
});

JSPで

<applet name="jZebra" code="jzebra.PrintApplet.class" archive="${pageContext.request.contextPath}/jzebra.jar" width="1" height="1">
     <param name="printer" value="zebra">
</applet>

<script type="text/javascript">
   function printZebra(data) {
       var applet = document.jZebra;
       if (applet != null) {
          applet.append(data);
          applet.print();
    }
   }
</script>

それだけです....それはすばらしかったです。この実装についてさらに詳しい情報が必要な場合はお知らせください。

于 2012-07-19T04:38:00.020 に答える