1.說明
android直接列印到zebra
標籤機,使用socket直接發送組織好的zpl代碼到zpl網路印表機。
zpl印表機有內嵌中文字體可用,可以使用印表機控制板打印字體清單
參考zebra zpl打印機附帶光碟pdf文檔zpl
program guide
示例代碼請使用android studio
整理
2.示例代碼
package com.example.pzt.printertest;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.media.Image;
import android.os.Looper;
import
android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Layout;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.Socket;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
public class MainActivity extends AppCompatActivity
{
Button
btnPrint;
ImageView
layout;
String
tttt;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String item = "P149WGG",
qty = "36",
uom = "Y",
times = "555",
checker = "潘占濤",
lotno =
"S2014130474162",
checkd =
"18-APR-2013",
qrcode =
"60916000150-010",
memo = "粘貼時請確實按壓";
btnPrint = (Button)
findViewById(R.id.btnPrint);
btnPrint.setOnClickListener(new
View.OnClickListener() {
@Override
public
void onClick(View v) {
new Thread(new Runnable()
{
@Override
public void run() {
try
{
Looper.prepare();
final String ip =
"10.52.18.240";
final Integer port =
9100;
Socket client = new
Socket(ip, port); //Port is 910
StringBuilder sb = new
StringBuilder();
sb.append("^XA");
//BEGIN
sb.append("^CWA,Z:NT20WGL4.FNT");
sb.append("^CI28");
sb.append("^LH15,15");
//VIEW
POINT
sb.append("^FO17,16");
//begin a
field at point 17,16
sb.append("^GB650,390,3");
//draw a rectange width 650, height 390, linewidth 3
sb.append("^FS");
//end a field
//item-code
sb.append("^FT40,80");
sb.append("^A0N,65,85");
sb.append("^FD");
sb.append(item);
sb.append("^FS");
//qty
sb.append("^FT40,170");
sb.append("^A0N,80,80");
sb.append("^FD");
sb.append(qty);
sb.append("^FS");
//uom
sb.append("^FT200,170");
sb.append("^A0N,65,65");
sb.append("^FD");
sb.append(uom);
sb.append("^FS");
//times
sb.append("^FT270,170");
sb.append("^A0N,65,65");
sb.append("^FD");
sb.append(times);
sb.append("^FS");
sb.append("^FT260,175");
sb.append("^A0N,65,65");
sb.append("^GB" +
(times.length() * 40 + 10) + ",60,3"); //draw a rectange width 650,
height 390, linewidth 3
sb.append("^FS");
//checker
sb.append("^FT650,190,1");
sb.append("^AAN,45,30");
sb.append("^FD");
sb.append(checker);
sb.append("^FS");
//lotno
sb.append("^FT40,260");
sb.append("^A0N,45,35");
sb.append("^FD");
sb.append(lotno);
sb.append("^FS");
//checkdate
sb.append("^FT650,260,1");
sb.append("^A0N,45,30");
sb.append("^FD");
sb.append(checkd);
sb.append("^FS");
//memo
sb.append("^FT190,380");
sb.append("^AAN,45,45");
sb.append("^FD");
sb.append(memo);
sb.append("^FS");
//qr-code
sb.append("^FT40,320");
sb.append("^A0N,20,20");
sb.append("^FD");
sb.append(qrcode.toString());
sb.append("^FS");
//qr-code-img
//TOP-RIGHT
sb.append("^FT660,110,1");
sb.append("^BQN,2,3,M,A");
sb.append("^FDQA,");
sb.append(qrcode.toString());
sb.append("^FS");
//BOTTOM-RIGHT
sb.append("^FT660,400,1");
sb.append("^BQN,2,3,M,A");
sb.append("^FDQA,");
sb.append(qrcode.toString());
sb.append("^FS");
//BOTTOM-LEFT
sb.append("^FT40,400");
sb.append("^BQN,2,3,M,A");
sb.append("^FDQA,");
sb.append(qrcode.toString());
sb.append("^FS");
//END
sb.append("^XZ");
byte[] mybytearray =
sb.toString().getBytes();
OutputStream outputStream =
client.getOutputStream();
outputStream.write(mybytearray, 0, mybytearray.length); //write
file to the output stream byte by byte
outputStream.flush();
outputStream.close();
client.close();
} catch
(Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
}
}
3.打印效果