1

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

无论如何我可以看到要为特定文件打印/打印多少页?

4

1 回答 1

2

除了通过 RIP(光栅图像处理器)传递工作之外,没有简单的方法可以做到这一点。在 Linux 和 Unix 世界中,打印作业作为 PostScript 文件传递​​。PostScript 实际上是一种成熟的图灵完备的编程语言。这意味着停机问题适用于他们。

因此,唯一的选择是将其通过 PostScript RIP(光栅图像处理器)并查看有多少页从中出来;不要忘记添加一些超时。

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

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

第一个命令使用该timeout命令调用Ghostscript,它不等待用户输入,同时处理整个文件,禁用已知的不安全功能并且不产生光栅输出。此管道进入grep以查找以;gs开头的诊断输出中的行。Page为每一页生成一个这样的行。最后,这是通过管道wc计算匹配的总行数。如果gs120 秒后未完成,则中止。

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

于 2017-02-25T17:17:19.937 回答