TSC打印机,使用java打印二维码,左右布局。
效果图:
1、安装打印机驱动。
驱动下载
2、引用的jar包
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>3.2.5</version>
</dependency>
2、引用的dll,将dll文件拷贝到项目根目录下,是项目根目录。
3、代码类
public class TscPrintUtils {
/**
* 格式化 listData 数据
* @param qrCode
* @param qrContent
* @param setupWidth
* @param setupHeigth
* @param listData
* @param fontheigth
* @param szfaceName
*/
public static void formatPrint(String pirnterName,String qrCode,String qrContent,String setupWidth,String setupHeigth,List<String> listData,Integer fontX,Integer fontheigth,String szfaceName){
List<String> list = new ArrayList<>();
// 每行限制 10位字,防止打印出边界
if(CollectionUtils.isNotEmpty(listData)){
for (String str : listData){
int maxStr = str.length()/10;
if((str.length()%10)!=0){
maxStr = maxStr+1;
}
for (int i=0;i<maxStr;i++){
if(i==maxStr-1){
list.add(str.substring(i*10));
}else {
list.add(str.substring(i*10,i*10+10));
}
}
}
}
print( pirnterName, qrCode, qrContent, setupWidth, setupHeigth, list, fontX, fontheigth, szfaceName);
}
public static void print(String pirnterName,String qrCode,String qrContent,String setupWidth,String setupHeigth,List<String> listData,Integer fontX,Integer fontheigth,String szfaceName){
System.setProperty("jna.encoding", "GBK");// 支持中文
TscLibDll.INSTANCE.openport(pirnterName);//打印机型号
TscLibDll.INSTANCE.setup(setupWidth,setupHeigth,"5","8","0","0","0");
TscLibDll.INSTANCE.clearbuffer();
//var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"';
String command = qrCode+"\"" + qrContent+"\""; //打印二维码的参数和内容
TscLibDll.INSTANCE.sendcommand(command); //传送指令
if(CollectionUtils.isNotEmpty(listData)){
if(StringUtils.isBlank(szfaceName)){
szfaceName = "宋体";
}
// 根据自己的纸张,计算平均行间距
// X 360中间点
Integer firstX = fontX;
// Y高度0-360
Integer firstY = 360/listData.size();
Integer oneY = 60;//行间距60
for(String str : listData){
TscLibDll.INSTANCE.windowsfont(firstX, firstY, fontheigth, 0, 2, 0, szfaceName, str);
firstY = firstY + oneY;
}
}
TscLibDll.INSTANCE.printlabel("1", "1");
TscLibDll.INSTANCE.closeport();
}
public interface TscLibDll extends Library {
// 此处默认读取项目根路径下的TSCLIB.dll,也可以填写绝对路径
TscPrintUtils.TscLibDll INSTANCE = (TscPrintUtils.TscLibDll) Native.loadLibrary ("TSCLIB", TscPrintUtils.TscLibDll.class);
// 以下为dll函数库支持的方法,方法的作用与参数说明见附件【】
int about ();
int openport (String pirnterName);
int closeport ();
int sendcommand (String printerCommand);
int setup (String width,String height,String speed,String density,String sensor,String vertical,String offset);
int downloadpcx (String filename,String image_name);
int barcode (String x,String y,String type,String height,String readable,String rotation,String narrow,String wide,String code);
int printerfont (String x,String y,String fonttype,String rotation,String xmul,String ymul,String text);
int clearbuffer ();
int printlabel (String set, String copy);
int formfeed ();
int nobackfeed ();
int windowsfont (int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content);
}
}
4、测试
public class PrintLabelMain {
public static void main(String[] args){
TscPrintUtils utils = new TscPrintUtils();
List<String> list = new ArrayList<>();
list.add("单位:单位名称");
list.add("设备类型:设备名称");
list.add("编号:E0005");
list.add("位置:#8号楼8单元8层8008室");
utils.formatPrint("TSC TE344","QRCODE 10,55,Q,12,A,0,M2,S7,","张张智能科技有限公司","60","40",list,340,33,"宋体");
}
}
留个记录!