我目前正在使用lpr从命令行进行打印。 我也在使用python后端。
无论如何,我可以看到要为特定文件打印/打印多少页?
答案 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
)。