package com.mes.print.impl; import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintService; import javax.print.SimpleDoc; import com.mes.print.PrinterException; import com.mes.print.config.PrinterConfig; import com.mes.print.model.FlowCardData; import com.mes.print.model.LabelData; import com.mes.print.template.LabelTspl; import com.mes.print.util.PrinterUtil; /** * TSC TTP-244 Pro 及同类热敏标签机:走 TSPL 原始字节流 * 需要在 Windows 装 TSC 官方驱动,Java 通过驱动 pass-through 到打印机 */ public class TscPrinter implements PrinterImpl { @Override public void printFlowCard(FlowCardData data) { throw new PrinterException("TSC 打印机不支持流转卡打印,请配置 HP 打印机"); } @Override public void printLabel(LabelData data) { if (data == null) throw new PrinterException("标签数据为空"); String name = PrinterConfig.get("printer.name"); PrintService svc = PrinterUtil.find(name); byte[] tspl = LabelTspl.build(data); try { DocPrintJob job = svc.createPrintJob(); Doc doc = new SimpleDoc(tspl, DocFlavor.BYTE_ARRAY.AUTOSENSE, null); job.print(doc, null); } catch (PrinterException e) { throw e; } catch (Exception e) { throw new PrinterException("标签打印失败: " + e.getMessage(), e); } } }