我尝试从命令行打印两个文件:
$ lp alpha.txt beta.txt
Run Code Online (Sandbox Code Playgroud)
该lpq
命令给出以下输出:
$ lpq
HP_OfficeJet_Pro_6970_7BE7A4 is ready
Rank Owner Job File(s) Total Size
1st claus 56 alpha.txt 2048 bytes
Run Code Online (Sandbox Code Playgroud)
这里,它只提到了 file alpha.txt
。beta.txt
但是,实际上仅打印文件。alpha.txt
未打印。
原因可能是什么?
我正在运行带有 CUPS 2.4.1 的 Ubuntu 22.04.1 LTS。
更多信息
如果我用来lp
打印多个文件,则会出现以下消息/var/log/cups/error_log
:
W [13/Dec/2022:16:22:19 +0100] [Job 61] /tmp/12345639a6b95: file is damaged
W [13/Dec/2022:16:22:19 +0100] [Job 61] /tmp/12345639a6b95 (offset 14802): xref not found
W [13/Dec/2022:16:22:19 +0100] [Job 61] /tmp/12345639a6b95: Attempting to reconstruct cross-reference table
Run Code Online (Sandbox Code Playgroud)
更多信息2
日志中的文件名以 12345 开头。这种整齐的模式纯属巧合。反复尝试表明,文件名的前 5 位似乎是gstoraster
作为打印过程的一部分运行的 CUPS 过滤器的 PID 的十六进制值。所以也许问题出在那个过滤器上。
回答我自己的问题:
\n我在 CUPS 邮件列表上发布了这个问题,并从 Helge Blischke 得到了这个答案:
\n\n\n好吧,我不完全明白这里发生了什么,\n但我至少有一个假设我\xe2\x80\x99会尝试在这里解释。
\n我从你的日志文件中了解到的是:
\n\xe2\x80\x94 您的打印机是使用基于 cups-browsed 功能的隐式类模拟(由 openprinting 开发的,\ncups 1.x 中实现的隐式类的功能可在 cups 2.x 中使用)来设置的。
\n这种方法似乎 - 至少对我而言 - 相当复杂,关键特征是后端\n“隐式类”(此处使用的)通过为每个作业文件执行完整\n过滤器链来收集相关打印机的所有作业。
\n\xe2\x80\x94 这意味着例如对于 PDF 文件(cups-filter 策略是使用 pdftopdf 过滤器将所有要打印的文件\n至少中间转换为 PDF,根据我的经验,附加一个\n额外的 EOF 字符( ^Z,我想)到每个 PDF 文件。
\n\xe2\x80\x94 在隐式类后端执行的过滤器链中的某个位置,PDF 由 QPDF 库中实现的例程进行处理,这会导致由中间 ^Z 字符 \xe2\x80\x94 引起的 PDF 错误消息至少是我从各种消息中推断出的。
\n由于我自己不使用cups-filters包(即使在我的Linux机器上我也不使用\xe2\x80\x99t),我没有机会\n进一步消化这个问题。但我认为我的论文不能\xe2\x80\ x99t 完全错误。
\n
所以,显然,这是 CUPS 中一个相当复杂的错误,我只能忍受它。
\n 归档时间: |
|
查看次数: |
365 次 |
最近记录: |