树莓派3下Python调用斑马GK888t打印机



折腾了几天终于初有收获。继去年的三无温控探头之后,海爷又支援了他珍藏的斑马打印机。结合之前的研究成果,这下终于可以尝试用树莓派实现自助打印的业务模式了。

首先当然是通过USB物理连接打印机到树莓派3上。用lsusb命令看一下USB的设备,应该能看到一条类似于“Bus 001 Device 006: ID 0a5f:00c9 Zebra”的记录。然后就该装“驱动”了。和Windows不同,Raspbian下装打印机“驱动”可以通过CUPS安装。
参考这篇文档: http://www.howtogeek.com/169679/how-to-add-a-printer-to-your-raspberry-pi-or-other-linux-computer/
这里仅简要记录几个核心步骤:

sudo apt-get install cups #安装CUPS
sudo usermod -a -G lpadmin pi #假设你正在使用默认的pi账号。将pi账号作为管理账号。一会儿会用到。

然后修改配置文件 /etc/cups/cupsd.conf:
找到:
# Only listen for connections from the local machine
 Listen localhost:631
改成:
# Only listen for connections from the local machine
 # Listen localhost:631
 Port 631

然后在下面几节中添加“Allow @local”,以下是改完后的样子:
< Location / >
# Restrict access to the server...
Order allow,deny
Allow @local
< /Location >

< Location /admin >
# Restrict access to the admin pages...
Order allow,deny
Allow @local
< /Location >

< Location /admin/conf >
AuthType Default
Require user @SYSTEM

# Restrict access to the configuration files...
Order allow,deny
Allow @local
< /Location >

接着重启服务。
sudo /etc/init.d/cups restart

然后就可以登录 http://《树莓派IP地址》:631添加打印机了。
第一次进去后按“Administration”页。需要登录就用你的pi账号。
接下来就按部就班的添加打印机,这里就不多啰嗦了。有个实用的选项就是共享,拿树莓派改造打印机为无线网络打印机就靠它了,回头我也试下。CUPS支持Zebra。我的被自动识别为Zebra Technologies ZTC GK888t (EPL) ,实际选择的是EPL2,不然打印不了。

设置默认纸张可以在设置完之后进行。切换到“Printers”页,选中需要的打印机的超链接。这时候左上角有两个下拉框,保持左边的Maintenance不动,右边的那个选Set Default Options即可。分辨率不要黑心,照实选,不然打印出来的效果会吐血的。
我选了Custom,宽度4高度3(与标签保持一致),单位厘米,分辨率203dpi,媒体类型为打印机默认。记得按下“Set Default Option”按钮。

至此打印机设置完成。

为了让python可以使用它,先sudo apt-get python-cups。当然这个不是唯一选择,但至少对我来说试下来这个最不折腾。

示例代码如下:

#! /usr/bin/env python
import cups  
import time
import subprocess

conn = cups.Connection()
printers = conn.getPrinters()
printer_name = printers.keys()[0]

printerQueueLen = len(conn.getJobs())
if (printerQueueLen <= 1):
    time.sleep(1)
    printID = conn.printFile(printer_name,'/home/pi/src/pi_logo.png','ki',{'fit-to-page':'False','orientation-requested':'3'})

最后一个参数是打印的option,可惜我没找到太完整的参考说明,只能用到时现搜了。谁有也请告知下。

(那些特别大的就是参数为空({})的效果,貌似默认是fit-to-page的)



发布了122 篇原创文章 · 获赞 61 · 访问量 53万+

猜你喜欢

转载自blog.csdn.net/ki1381/article/details/54709766
今日推荐