首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CUPS无驱动打印服务器作为带有传统PPD打印机驱动程序的打印机的代理

CUPS无驱动打印服务器作为带有传统PPD打印机驱动程序的打印机的代理
EN

Unix & Linux用户
提问于 2020-12-26 18:01:10
回答 1查看 1.2K关注 0票数 1

在我的网络上,我想使用Linux CUPS打印系统对IPPEverywhere使用无人驱动打印。

我有一些网络打印机,它确实支持无驱动打印与IPP,只有非常小。一个不打印一些pdf文件,另一个不打印一个以上的副本,等等。但他们都很好地使用它的原生PPD打印机驱动程序打印。因此,我想在我的网络上显示一个打印服务器,它使用自己的打印机驱动程序为网络打印机提供服务,但在网络上显示为(虚拟的?)为每台网络打印机提供全功率IPP设备。

这通常意味着打印服务器正在将无驱动的IPP打印命令从网络客户端“转换”到打印机遗留的打印命令,因此我在网络上只有IPPEverywhere打印队列。默认情况下,CUPS创建一个本地打印队列,用于使用IPPEverywhere或使用打印机遗留驱动程序使用其PPD文件为打印机提供服务。

代码语言:javascript
运行
复制
┏━━━━━━━━━━━━━┓
┃ localhost   ┃
┃   ┌───────┐ ┃                ┏━━━━━━━━━┓
┃   │ Queue │═╋════════════════┫ Printer ┃
┃   └───────┘ ┃                ┗━━━━━━━━━┛
┗━━━━━━━━━━━━━┛

现在的想法是拥有一个像网络上没有驱动的打印机那样的打印服务器:

代码语言:javascript
运行
复制
┏━━━━━━━━━━━━━┓                ┏━━━━━━━━━━━━━┓
┃ localhost   ┃                ┃ printserver ┃
┃   ┌───────┐ ┃ IPPEverywhere  ┃   ┌───────┐ ┃  legacy PPD driver  ┏━━━━━━━━━┓
┃   │ Queue │═╋════════════════┫   │ Queue │═╋═════════════════════┫ Printer ┃
┃   └───────┘ ┃                ┃   └───────┘ ┃                     ┗━━━━━━━━━┛
┗━━━━━━━━━━━━━┛                ┗━━━━━━━━━━━━━┛

将打印机与其遗留驱动程序连接到打印服务器是没有问题的。这是旧的方法(但将成为反对和删除上游CUPS版本)。

但是我如何在网络上找到打印服务器,这样我就可以连接到它,例如我的安卓智能手机和打印,使用IPPEverywhere?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-01-04 23:12:51

当时,我使用的部分解决方案只能用于网络上的Linux设备,而不是用于移动设备的通用打印解决方案。但要把它记录下来我会分享的。也许有一些来自社区的指点或答案,所以我们得到了最终的解决方案。

我假设打印机是成功连接的,您可以从打印服务器打印到它:

代码语言:javascript
运行
复制
printserver ~$ lp -E -d myprinter /usr/share/cups/data/testprint

我使用打印机共享直接访问打印服务器上的队列。为此,我必须将其配置为默认服务器,而不是本地打印队列的localhost

代码语言:javascript
运行
复制
┏━━━━━━━━━━━━━┓                ┏━━━━━━━━━━━━━┓
┃ localhost   ┃                ┃ printserver ┃
┃             ┃ IPPEverywhere  ┃   ┌───────┐ ┃  legacy PPD driver  ┏━━━━━━━━━━━┓
┃             ┃════════════════╋═══│ Queue │═╋═════════════════════┫ myprinter ┃
┃             ┃                ┃   └───────┘ ┃                     ┗━━━━━━━━━━━┛
┗━━━━━━━━━━━━━┛                ┗━━━━━━━━━━━━━┛

在安装了CUPS的打印服务器上使用Debian Buster,您必须启用共享:

代码语言:javascript
运行
复制
printserver ~$ sudo cupsctl -E --share-printers
printserver ~$ sudo cupsctl -E   # check settings

对于安装了CUPS的设备上的Debian,在/etc/cups/client.conf中设置默认的打印服务器:

代码语言:javascript
运行
复制
client ~$ sudo bash -c 'echo "ServerName printserver" >> /etc/cups/client.conf'

我们只需要这么做才能进入打印机。使用以下方法检查其状态和选项:

代码语言:javascript
运行
复制
client ~$ lpstat -E -t
client ~$ lpoptions -E
client ~$ lpoptions -E -l

使用最后一个命令,您将找到打印机的特殊选项,这些选项不是lp中的通用选项,例如,我的彩色打印机的BRMonoColor。此示例将以灰色代替默认颜色打印两份双面纸:

代码语言:javascript
运行
复制
client ~$ lp -E -d myprinter -n 2 -o fit-to-page -o collate=true -o sides=two-sided-long-edge -o BRMonoColor=Mono ./two-pages.pdf

如果您有一个本地连接到客户端的USB打印机,可能会出现问题。您将不会在localhost上看到它的队列。在这种情况下,始终可以使用环境变量CUPS_SERVER指定打印服务器:

代码语言:javascript
运行
复制
client ~$ CUPS_SERVER=localhost lpstat -E -t
client ~$ CUPS_SERVER=localhost lp -E ...

参考资料:

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/626211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档