我不懂 PostScript 语言。
我有一个用 bash 编写的双面打印仿真系统。它先打印奇数页,然后打印偶数页。它需要知道是否有奇数页数,以便可以弹出没有对应偶数面的最后一个奇数页。它还使用页数来报告目的。
我不知道如何正确地做到这一点,所以我编写了代码,在 PostScript 文件的末尾和开头(如果需要)搜索“%%Pages:”,后面跟着页数。这几乎适用于除 Opera 浏览器打印的文件之外的所有文件。
有人可以建议其他方法来获取此信息吗?
Postscript 文件往往相当大,包含大量非人类可读的内容,因此我还没有花很多时间仔细研究 Opera 发布的那些文件。
短暂性脑缺血发作
当前代码位于:
http://sourceforge.net/projects/duplexpr/
function ps_page_ct
答案1
以下 Ghostscript 命令将可靠地计算 PostScript 文件中的页数 - 但它可能相当慢,因为它需要完全解释(运行)文件,正如@afrazier 在评论中所述:
gs \
-o /dev/null \
-sDEVICE=bbox \
input.ps 2>&1 \
| grep HiResBoundingBox \
| wc -l
答案2
不幸的是,没有简单的方法可以在原始 Postscript 文件中查找页面。这就是%%Pages
创建约定(Adobe 文档结构约定)的原因。
发出寻呼的命令是showpage
。在简单情况下,你只需计数即可。
但是这个命令可以嵌入在函数主体中,然后您需要一个 Postscript 解析器。
答案3
我在某处找到了这个小代码片段,它可以非常快速地处理文档并打印出页数。如果 exiftool 由于文档生成不正确而无法打印此元数据信息,那么这会有所帮助:
gs -dNODISPLAY -dBATCH -dNOPAUSE -o /dev/null source|grep -P '^Page'|wc -l