2014-01-24 228 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) { 
       } 
      } 
     } 
    } 
} 
相关问题