2017-02-25 45 views

回答

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)。