2012-07-14 205 views
2

我正在使用Java應用程序向FedEx發出Web服務調用並嘗試將標籤打印到本地USB連接的熱敏打印機。 我會從聯邦快遞得到字節數組作爲響應,並需要打印到客戶端機器,其中熱敏打印機連接將字節數組打印到熱敏打印機Java

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); 

你的幫助是高度讚賞,還是建議我/重定向我一個鏈接,我可以找到解決方案。

UPDATE:我想將FedEx標籤從基於Web的應用程序打印到本地USB連接的熱敏打印機上。

我有如上所寫的服務器代碼,我面臨問題在本地打印標籤。

上述代碼正在尋找連接在應用程序服務器上的打印機。

當客戶端點擊「打印標籤」按鈕,聯邦快遞的Web服務調用是成功和正確地返回ZPLII格式字節數組,但「希望這個字節數組推送到客戶端計算機和打印的熱敏打印機」

直到從FedEx得到字節數組後纔開始工作,之後我就無法實現將字節數組帶回打印機以在熱敏打印機上打印。

+0

你顯示的代碼,但你不告訴預期的輸出是什麼,或爲什麼代碼是錯誤的或它實際上做了什麼,是在一般的mindreaders互聯網? – 2012-07-14 05:47:36

+0

Jarrod。希望現在有道理。 – changeme 2012-07-14 15:27:03

+0

你還沒有真正說出什麼是不工作,什麼是錯誤的,或者這裏的其他任何東西都是一團代碼和我正在做的事情。 – 2012-07-14 18:53:45

回答

1

我用jZebra打印此到本地USB連接熱敏打印機

這裏是我的代碼去。

在Action類

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> 

完蛋了....它的工作真棒。請讓我知道是否有人需要幫助的任何進一步的信息在這個實施。