我目前正在使用 lpr 从命令行打印。我也在使用 python 后端。
无论如何我可以看到要为特定文件打印/打印多少页?
除了通过 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
计算匹配的总行数。如果gs
120 秒后未完成,则中止。
请注意,这仍然容易受到恶意 PostScript 文件的影响(即使使用-dSAFER
.