Ubuntu Server 22.04.2下用Python打印PDF至局域网Epson L450打印机
在Ubuntu Server上用Python打印PDF到局域网Epson L450打印机
Ubuntu Server没有os.startfile这类Windows专属API,你需要基于CUPS(Ubuntu默认打印系统)实现PDF打印,以下是可行方案:
第一步:配置CUPS与网络打印机
- 安装CUPS服务:
sudo apt update && sudo apt install cups
- 启动并启用CUPS服务:
sudo systemctl start cups && sudo systemctl enable cups
- 添加局域网内的Epson L450打印机:
Epson L450支持IPP网络打印,通过打印机IP地址添加即可,替换<打印机IP>为设备实际局域网IP:
执行后用sudo lpadmin -p Epson_L450 -v ipp://<打印机IP>:631/ipp/print -E -m everywherelpstat -p命令确认打印机是否添加成功,若要设为默认打印机,运行:sudo lpoptions -d Epson_L450
第二步:修改Python脚本实现打印
用subprocess模块调用CUPS的lp命令替代原Windows代码,实现PDF打印:
import subprocess import time # file为你通过Selenium下载的PDF文件路径 if nfile != logname: # 调用lp命令打印,已设默认打印机可去掉"-d Epson_L450"参数 subprocess.run(["lp", "-d", "Epson_L450", file], check=True) # 可选:等待打印任务进入队列,时间按需调整 time.sleep(2) # 无GUI环境下无需杀PDF查看器进程,lp由cupsd后台处理;若用了evince等工具,可按需清理 # for p in psutil.process_iter(): # if 'evince' in str(p): # p.kill()
补充依赖
如果是无GUI的Ubuntu Server,需安装PDF转打印格式的依赖:
sudo apt install cups-filters ghostscript
可通过lpq查看打印队列状态,lprm取消打印任务。
内容的提问来源于stack exchange,提问作者Omar Morales Rivera
相关产品推荐
相关产品推荐

