TscPrinter.java 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package com.mes.print.impl;
  2. import javax.print.Doc;
  3. import javax.print.DocFlavor;
  4. import javax.print.DocPrintJob;
  5. import javax.print.PrintService;
  6. import javax.print.SimpleDoc;
  7. import com.mes.print.PrinterException;
  8. import com.mes.print.config.PrinterConfig;
  9. import com.mes.print.model.FlowCardData;
  10. import com.mes.print.model.LabelData;
  11. import com.mes.print.template.LabelTspl;
  12. import com.mes.print.util.PrinterUtil;
  13. /**
  14. * TSC TTP-244 Pro 及同类热敏标签机:走 TSPL 原始字节流
  15. * 需要在 Windows 装 TSC 官方驱动,Java 通过驱动 pass-through 到打印机
  16. */
  17. public class TscPrinter implements PrinterImpl {
  18. @Override
  19. public void printFlowCard(FlowCardData data) {
  20. throw new PrinterException("TSC 打印机不支持流转卡打印,请配置 HP 打印机");
  21. }
  22. @Override
  23. public void printLabel(LabelData data) {
  24. if (data == null) throw new PrinterException("标签数据为空");
  25. String name = PrinterConfig.get("printer.name");
  26. PrintService svc = PrinterUtil.find(name);
  27. byte[] tspl = LabelTspl.build(data);
  28. try {
  29. DocPrintJob job = svc.createPrintJob();
  30. Doc doc = new SimpleDoc(tspl, DocFlavor.BYTE_ARRAY.AUTOSENSE, null);
  31. job.print(doc, null);
  32. } catch (PrinterException e) {
  33. throw e;
  34. } catch (Exception e) {
  35. throw new PrinterException("标签打印失败: " + e.getMessage(), e);
  36. }
  37. }
  38. }