需要注意的点:数据拼接时一定要在数据两边加上双引号,否则打印出来的东西会报错!!!
package com.tscsdk;
import java.io.IOException;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HRPrintTest {
public static void main(String[] args) throws IOException {
//左上角是坐标原点 0,0 数据拼接格式格式 POINT;y坐标;x坐标;字体宽度;字体高度;"数据"\r\n
//注意:拼接的数据格式两边一定要加上 双引号
StringBuilder sbf = new StringBuilder("@NORMAL\r\n");
sbf.append("@PAPER;WIDTH 50;LENGTH 99;SPEED IPS 2;INTENSITY 0;LANDSCAPE"+"\r\n");//固定开头,设置纸张
sbf.append("@CREATE;JP"+"\r\n");
sbf.append("SCALE;DOT;300;300"+"\r\n");//创建表单,分辨率为300,如是203点机器,请改为203;203
/***********************************打印变量开始************************************/
sbf.append("FONT;FACE 92250;BOLD OFF;SLANT OFF;SYMSET 0"+"\r\n");
sbf.append("ALPHA"+"\r\n");//ALPHA:打印英文和数字
//坐标是 y x
//合同号
sbf.append("POINT;150;1750;20;18;"+"\"HT20231221001\""+"\r\n");
//执行标准
sbf.append("POINT;530;380;20;18;"+"\"zhixingbiaozhun\""+"\r\n");
//批卷号
sbf.append("POINT;640;380;20;18;"+"\"pijuanhao\""+"\r\n");
//规格
sbf.append("POINT;640;1450;20;18;"+"\"guige\""+"\r\n");
//生产日期
sbf.append("POINT;765;380;12;12;"+"\""+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) +"\""+"\r\n");
//张数
sbf.append("POINT;880;380;20;18;"+"\"zhangshu\""+"\r\n");
//库位号
sbf.append("POINT;880;1750;20;18;"+"\"kuweihao\""+"\r\n");
//净重
sbf.append("POINT;1000;380;24;15;"+"\"jingzhong\""+"\r\n");
//炉号
sbf.append("POINT;1000;1750;24;15;"+"\"luhao\""+"\r\n");
//毛重
sbf.append("POINT;1130;380;24;15;"+"\"maozhong\""+"\r\n");
sbf.append("STOP"+"\r\n");//结束标识一定要有,否则下一段打印中文不生效
/***********************************打印变量结束************************************/
/************************************************打印中文 开始*******************************************/
sbf.append("FONT;NAME MSGBL.TTF;BOLD ON;SLANT OFF;SYMSET 0" + "\r\n"); //固定开头,设置字体。MSGBL.TTF中文字库,需要购买版权
sbf.append("TWOBYTE" + "\r\n");//TWOBYTE:打印中文
//到站港
sbf.append("POINT;270;1750;20;18;"+"\"黄骅港\""+"\r\n");
//产品名称
sbf.append("POINT;400;380;20;18;"+"\"热轧测试产品\""+"\r\n");
//质量等级
sbf.append("POINT;765;1750;20;18;"+"\"特级\""+"\r\n");
//质检员
sbf.append("POINT;1150;1750;24;15;"+"\"张三\""+"\r\n");
//收货单位
sbf.append("POINT;1240;380;24;15;"+"\"测试收货单位\""+"\r\n");
sbf.append("STOP"+"\r\n");//结束标识一定要有
/************************************************打印中文 结束*******************************************/
/************************************************打印二维码 开始*******************************************/
sbf.append("BARCODE" + "\r\n");//打印二维码配置项
sbf.append("QRCODE;800;1010;" + "\r\n");//打印二维码
sbf.append("\"" + "测试二维码" + "\"" + "\r\n");
sbf.append("STOP" + "\r\n");
/***********************************************打印二维码 结束*******************************************/
/***********************************************打印条形码 开始*******************************************/
sbf.append("BARCODE" + "\r\n");//打印条形码
sbf.append("C3/9;VSCAN;XRD2:2:7:7;H4.55;DARK;190;520" + "\r\n"); //190:距离左上角y坐标 520:距离左上角x坐标
sbf.append("\"" + "test_barcode" + "\"" + "\r\n");//条形码下的文字,禁止使用中文,会报错
sbf.append("PDF;B" + "\r\n");
sbf.append("STOP" + "\r\n");
/***********************************************打印条形码 结束*******************************************/
sbf.append("END"+"\r\n");//整体打印终止标识一定要有
sbf.append("@EXECUTE;JP;"+"\r\n");
sbf.append("@NORMAL"+"\r\n");
String data = sbf.toString();
//打印到打印机
Socket socket = new Socket("自己打印机的ip",9100);
socket.getOutputStream().write(data.getBytes("gb2312"),0,data.getBytes("gb2312").length);
//释放连接
socket.close();
}
}
打印效果:因为这个标签里没有条形码的位置,随便瞎打出来了,大家做个参考就行
附上常见的链接打印机输出错误,以便大家排错:
文档地址:PRINTRONIX 打印机错误解析