如何从命令行和CUPS打印?

我有一台打印机用于两个目的:

  • 打印常规文件(Word,Internet页面等)
  • 从命令行直接打印(由echo "text" > /dev/usb/lp0

这在以前版本的Ubuntu中都运行良好。 但是,最近我们升级到11.10并遇到了问题。 首先,打印机不再添加到/ dev / usb。 所以我无法回应这条路径,无法从命令行实现打印。

经过一番麻烦,我找到了一个解决方法。 此解决方法是编辑/etc/modprobe.d/blacklist-cup-usblp.conf 。 该文件为:

 # cups talks to the raw USB devices, so we need to blacklist usblp to avoid # grabbing them blacklist usblp 

在评论此黑名单后,设备在/ dev / usb中正确显示为lp0。 我对lp0的权限有疑问,但这是由Luis Felipe Barrera Mora的回答解决的。

但是,我现在要解决一个主要问题。 在评论黑名单后,打印机从Word文档打印时停止工作。 这是合乎逻辑的,因为我禁用了CUPS需要的东西。 所以基本上我现在只能选择启用常规CUPS打印而不打印命令行,或者我有命令行打印而没有CUPS打印。

UPDATE

为了完整性:我实际上有两台打印机同时连接。 一个用于使用CUPS和命令行打印。 另一个 – 爱普生收据打印机 – 仅用于命令行打印。 我花了很多天试图让它运行使用CUPS,但这是不可能的。 但是,这意味着lpr命令无法解决问题,因为我无法让第二台打印机在CUPS下运行。 我真的需要能够访问/etc/dev/lp0 (或类似的路径)并同时使用CUPS打印。

我有同样的问题,如果你总是添加文件lp0的权限,你必须编辑打印机规则:

 $ gksudo gedit /lib/udev/rules.d/70-printers.rules 

添加[, MODE="0666"]

该文件包含:

 ACTION=="add", ... KERNELL="lp*" ... , MODE="0666" 

为什么不使用lpr从命令行打印? 喜欢:

 echo "text" > /tmp/someFileName lpr -P YourPrinter /tmp/someFileName 

这是一种解决方法,但应该是一种简单的方法来做你想做的事情而不改变一些权限……

打开Web浏览器以访问http://localhost:631/以配置CUPS。 您应该能够通过echo "text" | lpr从命令行进行打印 echo "text" | lpr 。 使用lpstat -t查看所有CUPS的状态信息, lpstat -d查看系统的默认打印目的地, man lpstat获取更多信息, man lpr用于指定哪个打印机。

所有打印应通过CUPS – 它管理队列,打印机,…

您可以尝试将其添加为CUPS中的“Raw”打印机。 我不确定它是否有效,但值得一试。

你必须为此重新列入usblp黑名单。 将Epson添加到CUPS,选择“Generic”作为制造商,选择“Raw Queue”作为设备。 另外,您可能必须使用lpr -o raw filename来打印内容。

我面临类似的事情。 我选择做的是确保只有收据打印机通过USB连接(通用打印机将通过网络接口连接)。 这允许我删除黑名单,直接打印到设备,并使用CUPS用于网络打印机。

这不是最佳选择。 能够通过USB连接所有设备,然后选择我们不希望usblp抓取哪些设备真的很棒。 然而,与此同时,这似乎是最好的选择。 它可能不是你想听的,但它是我发现的唯一方法。

现在对于普通读者而言,收据打印机通常不通过CUPS连接的原因是,在零售环境中,速度是至关重要的,并发性不是一个因素。 您不需要打印机管理,队列管理等。 你真正需要的是它在打印时会立即打印出来。 不是几秒钟,而是马上。 每隔几秒钟你就可以减少工作流程,这是每个人不在等待的秒数。 乘以行长度,您就会发现问题所在。 因此,每一步的性能都至关重要,因为您通常只有一个收据打印机,而且通常仅为销售点应用程序打印,因此CUPS的成本远高于它提供的成本。

这并不是说没有环境可以通过CUPS进行设置。 餐馆往往在他们的厨房里有类似的打印机,并且那里的并发问题很重要,所以你在那里使用CUPS。 然而,它并不总是最好的工作工具,零售收据打印机不遵循CUPS遵循的相同假设。