在我的 Debian 9.4 Linux(“Stretch”)上,我几乎可以从每个程序进行打印,当然可以从铬合金,自由办公室,emacs,奥库拉并通过LPR。但是,我无法打印瘸子。
打印机是一个兄弟 DCP-L2500DUSB打印机。打印完成计算机辅助系统。
打印时从瘸子我收到一条错误消息/var/log/cups/error_log
Can't use an undefined value as a subroutine reference at /usr/lib/cups/filter/brother_lpdwrapper_DCPL2500D line 565.
有问题的文件是一个简陋的 Perl 脚本,错误位于函数中check_custom_paper()
。它试图在那里找到一个单元函数,通过遍历哈希值。此时相关的值是
从 gimp 打印时
$ppdcust = "Custom.a4"
$lpr_options_ref->{'-pt'} = "CUSTOM0"
使用 lpr 打印时
$ppdcust = (null)
$lpr_options_ref->{'-pt'} = "A4"
当我看剧本时,我很明显,瘸子值,它不会找到单元函数。当它稍后调用这个(未定义)函数时,它会产生上述错误。
现在,有人可能会说 Brother 制作了一个糟糕的 Perl 脚本。但随后我预计会在网上看到一些抱怨,但我没有看到。我今天重新安装了打印机驱动程序,它与我几年前安装的版本相同。再说一次,有人可能会说,Brother 不仅写了糟糕的 Perl 脚本,而且也不修复它们。
令我困扰的是,印刷大多有效。甚至我的打印机的扫描仪部分也能工作。所以罪魁祸首也可能是瘸子和Custom.a4
是CUSTOM0
值,一个行为良好的程序不应该传递给CUPS
。
我也尝试安装古腾印记,但这只会让事情变得更糟:我根本无法再打印。
- 有谁知道为什么瘸子和我的兄弟打印机彼此不一致?
答案1
很抱歉问了一个不太值得 StackExchange 的问题。但在有人投入实际工作之前,这里是问题的解决方案:
我终于做到了显而易见的事情并将整个~/.gimp-2.8
目录移开。嗯瞧 - 印刷工作。
吉普用新文件重新填充此目录,以便找到罪魁祸首,我恢复了旧文件,并开始用新文件逐个替换其中的每个文件。
我立即对一个名为 的文件产生了怀疑print-page-setup
。首先,它显然与打印有关,其次,它包含一行,PPDName=a4
而新文件包含PPDName=A4
在其中,我已经看到了这一点小写 a4
$ppdcust
作为调试时值的一部分brother_lpdwrapper_DCPL2500D
(请参阅我原来的问题描述)
替换print-page-setup
进去 ~/.gimp-2.8
就做到了。傻我啊!
然而,我仍然不知道这个值最初是如何进入那里的,但谁在乎呢。