2014-01-24 268 views
3

我花了很多時間瞭解如何在Zebra打印機上(通過網絡)使用CPCL打印PCX圖像,而無需將圖像下載到打印機。使用CPCL在Zebra打印機上打印PCX圖像

在我看來,文檔上的示例很模糊。

我附上一個示例類,以顯示如何簡單地打印圖像。 它需要在你的類路徑上有一個「zebra.pcx」圖像。

希望它有幫助。

回答

2
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.Socket; 

public class PrintZebraPCXImage { 

    public static void main(String[] args) throws Exception { 
     PrintZebraPCXImage instance = new PrintZebraPCXImage(); 
     instance.print("192.168.1.133", 6101); 
    } 

    public void print(String address, int port) throws Exception { 
     Socket socket = null; 
     DataOutputStream stream = null; 

     socket = new Socket(address, port); 

     try { 
      stream = new DataOutputStream(socket.getOutputStream()); 
      ByteArrayOutputStream bos = readFileToString(this.getClass().getClassLoader().getResourceAsStream("zebra.pcx")); 

      stream.writeBytes("! 0 200 200 300 1\r\n"); 
      stream.writeBytes("PCX 20 0\r\n"); 

      stream.write(bos.toByteArray()); 
      stream.writeBytes("PRINT\r\n"); 

     } finally { 
      if (stream != null) { 
       stream.close(); 
      } 
      if (socket != null) { 
       socket.close(); 
      } 
     } 
    } 

    public ByteArrayOutputStream readFileToString(InputStream is) { 
     InputStreamReader isr = null; 
     ByteArrayOutputStream bos = null; 
     try { 
      isr = new InputStreamReader(is); 
      bos = new ByteArrayOutputStream(); 

      byte[] buffer = new byte[2048]; 
      int n = 0; 
      while (-1 != (n = is.read(buffer))) { 
       bos.write(buffer, 0, n); 
      } 

      return bos; 
     } catch (Exception e) { 
      throw new RuntimeException(e); 
     } finally { 
      if (isr != null) { 
       try { 
        isr.close(); 
       } catch (IOException e) { 
       } 
      } 
      if (is != null) { 
       try { 
        is.close(); 
       } catch (IOException e) { 
       } 
      } 
     } 
    } 
} 
相關問題