我正在写一个支持多台打印机的软件。为了测试它,我需要在我的CUPS服务器上添加多台打印机。我怎样才能做到这一点?
我想添加一些假打印机,这些打印机会将作业直接发送到/ dev / null。这样,我可以在CUPS界面中查看“已完成的作业”列表,并观察我的软件是否为每个作业使用正确的打印机。
我正在写一个支持多台打印机的软件。为了测试它,我需要在我的CUPS服务器上添加多台打印机。我怎样才能做到这一点?
我想添加一些假打印机,这些打印机会将作业直接发送到/ dev / null。这样,我可以在CUPS界面中查看“已完成的作业”列表,并观察我的软件是否为每个作业使用正确的打印机。
Answers:
一种解决方案是安装cups-pdf。它添加了一个可写入PDF文件的虚拟打印机。网上有几本有关如何安装和配置它的教程。自从我使用Gentoo以来,我已经阅读了Gentoo-wiki,其中也提到了Sabayon wiki。
cups-pdf虚拟打印机中包含一个配置文件/etc/cups/cups-pdf.conf
,默认情况下,所有PDF文件都写入/var/spool/cups-pdf/${USER}
。
(注意:在Ubuntu上,它写入〜/ PDF /)
但是,有一些限制:
由于只有一个配置文件,因此多个PDF打印机将保存到同一目录。
无法打印“原始”数据(例如,使用lpr -o raw
)。甚至发送PDF文件作为原始作业也将不起作用。原始打印作业将生成一个只有空白页的空白PDF文件。
即使有这些限制,它也可以很好地满足我的需求。
脚注:如果用户使用Gnome或通过GTK +应用程序进行打印,则在打印对话框中已经有一个“打印到文件”伪打印机。因此,用户为何仍要添加虚拟PDF打印机?原因如下:
杯子论坛对这个问题有更完整/准确的答案。
答案是设备URI应该设置为file:/ dev / null
所以在我的Ubuntu设置中:
哪个最适合我。
我再次搜索了Cups论坛,发现了以下内容:
在您的cupsd.conf中:
FileDevice yes
设定打印机
lpadmin -p nowhere -E -v file:/dev/null
测试打印机
who |lp -d nowhere
wine
。
您可以创建一个打印机输出,/dev/null
具有lpadmin
:
$ sudo lpadmin -p myprinter -E -v file:///dev/null
这将被写入/etc/cups/printers.conf
,但是您也可以使用以下命令查看打印机lpstat
:
$ sudo lpstat -s
myprinter accepting requests since Thu 22 Jan 2015 11:04:46 AM GMT
system default destination: myprinter
device for myprinter: ///dev/null
请注意,您可能需要在旧版Linux发行版上的/etc/cups/cupsd.conf中启用FileDevice。
要将新打印机设置为默认打印机,请使用lpoptions
:
$ sudo lpoptions -d myprinter
lpadmin -x myprinter
或Web界面。
最好的解决方案之一是使用ippserver
。它带有CUPSv2.2.2
更高的版本。您也可以从这里获取项目:IPP示例实现。
根据手册页上的描述:
ippserver是符合IPP Everywhere和IPP共享基础结构扩展(INFRA)规范的简单Internet打印协议(IPP)服务器。它可用作标准的IPP客户端和符合INFRA规范的IPP代理之间的独立打印服务器和/或非常基础的基础结构服务器。
要使用它,只需运行ippserver "My cool printer"
,它将创建一个虚拟打印机,并带有My cool printer
您的名称。它像Web服务器一样运行,并侦听特定端口。
如果需要多台打印机,可以使用来在多个端口上运行服务器ippserver "My other cool printer" -p 8888
。
您甚至可以使用属性文件来提供打印机属性。例如,您的打印机默认支持高质量打印,您可以在属性文件中添加以下属性:
ATTR enum print-quality-default high
并使用以下命令运行服务器:
ippserver "My high quality cool printer" -a attributes-file.txt
参考文献:
取自http://inai.de/linux/adm_virtualprinter:
CUPS中的虚拟打印机
要在CUPS中创建一个无处发送数据的打印机(如
/dev/null
),有很多方法。该页面使用该socket://
方法。首先设置xinetd
我们需要的是端口9上的TCP Discard服务。Xinetd内置了该服务,因此我们可以使用它。确保通常在xinetd的配置文件中提供以下定义
/etc/xinetd.d/discard
。它应包含如下服务:服务丢弃 类型=内部 id =丢弃流 socket_type =流 协议= TCP 用户=根 等待=否 禁用=否 标志= IPv6 IPv4运行rcxinetd reload
以重新读取配置文件并激活新discard
服务。或使用rcxinetd start
xinetd是否是尚未激活。CUPS打印机
现在转到CUPS Web前端并添加新打印机。作为目的地,使用
socket://localhost:9/
作为打印机,选择看起来很有特色的东西,例如“ HP 2500C Foomatic / pcl3”。这里的所有都是它的。