|
|
před 2 dny | |
|---|---|---|
| config | před 1 týdnem | |
| lib | před 1 týdnem | |
| src | před 2 dny | |
| .classpath | před 1 týdnem | |
| .gitignore | před 1 týdnem | |
| .project | před 1 týdnem | |
| README.md | před 1 týdnem | |
| SNMP-GUIDE.md | před 1 týdnem | |
| build.xml | před 1 týdnem | |
| sources.txt | před 1 týdnem |
通用打印库。一个 jar 搞定 HP 激光打印机(流转卡)和 TSC 热敏标签机(标签)。
Printer.printFlowCard() / Printer.printLabel()config/print.properties 声明本机打印机型号,无需改代码把编译产出的 mes-print.jar 放到客户端的 lib/ 目录。
拷贝 config/print.properties.example 到客户端的 config/print.properties,按本机情况改:
# HP 流转卡工位
printer.type=hp
printer.name=HP LaserJet 3004
# TSC 标签工位
printer.type=tsc
printer.name=TSC TTP-244 Pro
import com.mes.print.Printer;
import com.mes.print.model.FlowCardData;
import com.mes.print.model.LabelData;
// 流转卡
FlowCardData d = new FlowCardData();
d.setProduct("+KB24");
d.setSn("A2026072200001");
d.setOpNo("OP130B");
Printer.printFlowCard(d);
// 标签
LabelData l = new LabelData();
l.setSn("A2026072200001");
l.setBarcode("A2026072200001");
Printer.printLabel(l);
打印失败会抛 PrinterException(继承 RuntimeException),业务自行决定 try/catch。
ant jar
产出 dist/mes-print.jar。
或者直接用 javac:
javac -encoding UTF-8 -source 1.8 -target 1.8 -d build/classes ^
src/com/mes/print/*.java ^
src/com/mes/print/*/*.java
jar cf dist/mes-print.jar -C build/classes .
先跑一下 TestMain 看本机识别到的打印机:
java -cp mes-print.jar com.mes.print.TestMain list
如果输出里包含配置的打印机名,就是通的。然后:
java -cp mes-print.jar com.mes.print.TestMain label # 打测试标签
java -cp mes-print.jar com.mes.print.TestMain card # 打测试流转卡
src/com/mes/print/
├── Printer.java 门面(对外唯一入口)
├── PrinterException.java 统一异常
├── PrinterFactory.java 按 config 选实现
├── TestMain.java 手动测试入口
├── config/PrinterConfig.java config 加载
├── impl/
│ ├── PrinterImpl.java 实现接口
│ ├── HpPrinter.java Java2D → HP
│ └── TscPrinter.java TSPL → TSC
├── template/
│ ├── FlowCardRenderer.java A4 流转卡渲染
│ └── LabelTspl.java TSPL 生成
├── model/
│ ├── FlowCardData.java
│ └── LabelData.java
└── util/
└── PrinterUtil.java 打印机查找
Q: 未找到打印机: xxx
异常里会列出本机所有可用打印机名字。把 printer.name 改成列出的某个名字即可(支持模糊 contains 匹配)。建议装机时把打印机重命名成固定名字。
Q: TSC 打中文乱码 TTP-244 Pro 默认不带中文字库。三种解决:① 用 DiagTool 上传中文字库到打印机 ② 把中文渲染成位图用 TSPL BITMAP 发过去 ③ 标签内容只用数字/英文/条码。当前实现走方案 ③。
Q: 换打印机型号了怎么办
改 config/print.properties 里的 printer.name,重启客户端即可。