公司新买了一台TSC条码打印机,型号:TSC TTP-244 PRO,让和现有资产管理系统对接,可以根据系统上的编码直接打印。
研究了几天,终于调试出来了,下边是代码,,目测可用:
java后台调试代码(连接好打印机后可直接打印,用于直接调试):
import java.io.UnsupportedEncodingException;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.Native;
public class TscMain {
public interface TscLibDll extends StdCallLibrary {
TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary("TSCLIB", TscLibDll.class);
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);
}
public static void main(String[] args) throws UnsupportedEncodingException {
System.setProperty("jna.encoding", "GBK");// 支持中文
// TscLibDll.INSTANCE.about();
TscLibDll.INSTANCE.openport("TSC TTP-244 Pro");
// TscLibDll.INSTANCE.downloadpcx("C:\\UL.PCX", "UL.PCX");// 打印图片时需要先下载到设备
// TscLibDll.INSTANCE.sendcommand("REM ***** This is a test by JAVA. *****");
TscLibDll.INSTANCE.setup("60", "40", "5", "15", "0", "2", "0");
TscLibDll.INSTANCE.sendcommand("SET TEAR ON");
TscLibDll.INSTANCE.clearbuffer();
String command = "QRCODE 300,70,L,6,A,0,M2,S3,\"123456\"";// 打印二维码
TscLibDll.INSTANCE.sendcommand(command);
// TscLibDll.INSTANCE.sendcommand("PUTPCX 550,10,\"UL.PCX\"");// 图片位置
// TscLibDll.INSTANCE.printerfont("100", "50", "TSS24.BF2", "0", "1", "1", "Technology");
TscLibDll.INSTANCE.barcode("70", "140", "128", "90", "0", "0", "2", "2", "A123456789");// 打印内容,参数是位置和字体
TscLibDll.INSTANCE.windowsfont(15, 15, 40, 0, 2, 1, "Arial", "网络科技公司");
TscLibDll.INSTANCE.windowsfont(30, 90, 32, 0, 2, 0, "Arial", "--- 研发部");
TscLibDll.INSTANCE.windowsfont(120, 240, 32, 0, 2, 0, "Arial", "A123456789");
TscLibDll.INSTANCE.printlabel("1", "1");
TscLibDll.INSTANCE.closeport();
}
}
如何能够在线操作打印机呢?还想传递参数,同时打印条码和二维码?这里有两个解决方案。
1、使用java applet,再通过java后台调用dll打印。(此方法实现较复杂,有兴趣的可以到http://www.xinac.com/front/article/4253.html查看)
2、直接在页面上使用JS打印二维码。
- 以上代码本地已调试成功,有需要的请留言。
- Java后台直接生成二维码请参见另一篇文章。
打印出来大概是这样子:
-- 2017.01.04更新:增加一些注释和解决方案
-- 2017.12.19更新:增加JS打印条码的方法
附件:http://www.xinac.com/front/article/4253.html