如何判断从命令行打印的页数?

时间:2017-02-25 16:42:04

标签: python printing lpr

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

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

1 个答案:

答案 0 :(得分:2)

没有通过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 ,将整个文件处理为一个,禁用已知的不安全功能并生成没有光栅输出。这将导入 grep ,在gs的诊断输出中查找以Page开头的行;为每个页面生成一个这样的行。最后通过wc传送,以计算匹配的总行数。如果gs在120秒后没有完成,则会中止。

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