我如何知道从命令行打印多少页?

How can I tell how many pages will be printed from command line?

我目前正在使用 lpr 从命令行进行打印。 我也在使用 python 后端。

我是否可以看到要为特定文件打印print/have 多少页?

除非通过 RIP(光栅图像处理器)传递作业,否则没有简单的方法可以完成。在 Linux 和 Unix 世界中,打印作业作为 PostScript 文件传递​​。 PostScript 实际上是一种完全成熟的图灵完备编程语言。这意味着 Halting Problem 适用于他们。

所以唯一的选择是通过 PostScript RIP(光栅图像处理器)传递它并查看它产生了多少页;不要忘记添加一些超时。

Ghostscript 就是这样一个 RIP,它提供了一个 nullpage 输出设备,主要用于计算页数。使用以下命令行

timeout 120s gs -dNOPAUSE -dBATCH -dSAFER -sDEVICE=nullpage <file> \
| egrep '^Page' \
| wc -l

第一个命令使用 timeout 命令以不等待用户输入的方式调用 Ghostscript,一次处理整个文件,禁用已知的不安全特征并且不产生光栅输出。这将通过管道进入 grepgs 的诊断输出中寻找以 Page 开头的行;每页产生一条这样的线。最后,它通过 wc 进行管道传输,以计算匹配的总行数。如果 gs 在 120 秒后仍未完成,它将中止。

请注意,这仍然容易受到恶意 PostScript 文件的影响(即使 -dSAFER)。