python - 如何从 python 将中文字体打印到 Zebra ZPL 打印机?
问题描述
我的任务是开发 python 脚本以使用联网的 Zebra ZT410 打印标签。
到目前为止,我可以使用带有 ZPL 命令的“Zebra Setup Utilities”正确打印汉字:
^XA
^CW1,E:SIMSUN.TTF
^SEE:GB18030.DAT^CI26
^FO200,10^A1N,36,20^FDHTM1汉字^FS
^XZ
# -*- coding: utf-8 -*-
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('168.168.183.199', 9100))
zpl = '''
^XA
^CW1,E:SIMSUN.TTF
^SEE:GB18030.DAT^CI26
^FO200,10^A1N,36,20^FDHTM1汉字^FS
^XZ
'''
s.send(zpl.encode())
s.close()
但是,标签上的汉字在启动这个脚本时是乱码。
有没有人可以给我关于如何修复这个 python 代码的建议?
顺便说一下,我的打印机是ZT410-300dpi,V75.20.21Z,12,4096KB,详细信息如下:
- DIR R:*.*
- 4171776 bytes free R: RAM
- DIR E:*.*
* E:GB18030.DAT 95760 P
* E:SIMSUN.TTF 11519056 P 1
* E:TT0003M_.TTF 169188 P
- 55322112 bytes free E: ONBOARD FLASH
- DIR B:*.*
- DIR A:*.*
- DIR Z:*.*
* Z:0.TTF 125904 P 0
* Z:A.FNT 6839 P A
* Z:ALERTCFG.NRD 5186 P
* Z:AZTEC.BAR 0 P
* Z:B.FNT 7746 P B
* Z:BLUEBCK.BMP 230454 P
* Z:BLUEBCKDARK.BMP 230454 P
* Z:BLUETOOTH.WML 7938 P
* Z:BLUETOOTH420.BMP 400 P
* Z:BLUETOOTH52.BMP 480 P
* Z:BLUETOOTHCOLOR.WML 9373 P
* Z:BLUETOOTH_ICON.BMP 128 P
* Z:BLUETOOTH_NOT_AVAILABLE_ICON.BMP 128 P
* Z:CODABAR.BAR 0 P
* Z:CODABLK.BAR 0 P
* Z:CODE11.BAR 0 P
* Z:CODE128.BAR 0 P
* Z:CODE39.BAR 0 P
* Z:CODE49.BAR 0 P
* Z:CODE93.BAR 0 P
* Z:D.FNT 10648 P CD
* Z:DATA_BLANK_ICON.BMP 128 P
* Z:DATA_ICON.BMP 128 P
* Z:DISPLYQR.WML 2996 P
* Z:DISPLYQRCOLOR.WML 3189 P
* Z:DOWN_ARROW_COLOR.BMP 166 P
解决方案
我想通了,只需替换s.send(zpl.encode())
为s.send(zpl.encode(encoding='GB18030'))
# -*- coding: utf-8 -*-
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('168.168.183.199', 9100))
zpl = '''
^XA
^CW1,E:SIMSUN.TTF
^SEE:GB18030.DAT^CI26
^FO200,10^A1N,36,20^FDHTM1汉字^FS
^XZ
'''
s.send(zpl.encode(encoding='gb18030'))
s.close()
推荐阅读
- node.js - 使用 node-postgres 调用 postgres 函数的正确方法
- kubernetes - 与服务器的连接
:6443 被拒绝 - 您是否指定了正确的主机或端口 - reactjs - 如何在 react-papaparse 的“handleOnDrop”函数中获取数据?
- json - apache 提供的静态 Json 文件未显示正确的 mime 类型
- azure-pipelines - Azure:管道启动图
- android - Android 无法在 java 中创建实例 ViewModel
- r - 向 df 添加一列,计算另一列中某个值的出现次数
- ios - 无法在 SwiftUI 中的文本中显示 3 种颜色
- xml - 在 xslt 中应用模板后跳过执行
- javascript - 在谷歌地图上获取 kml 坐标并使用 geoxml 在地图上调整/拖动坐标