是否可以设置一个设置来显示假脱机队列打印作业在windows中具有原始postscript打印文件的页面数

是否可以设置一个设置来显示假脱机队列打印作业在windows中具有原始postscript打印文件的页面数,windows,printing,postscript,spool,Windows,Printing,Postscript,Spool,目前,它将在windows假脱机队列中以页数的形式显示N/A,这是否可以显示页数以及使用双向支持打印的页面?用这种文件格式?当然,打印机本身必须知道打印的是哪一页/打印了多少页。谢谢。我只能回答这个问题的PostScript部分,不能回答Windows spool队列。我不知道您是如何将PostScript插入spool队列的,但假设您是从应用程序打印的,那么我模糊的记忆表明,是应用程序声明了作业中的页数 打印机不知道PostScript程序包含多少页。事实上,在最一般的情况下,无法确定Post

目前,它将在windows假脱机队列中以页数的形式显示N/A,这是否可以显示页数以及使用双向支持打印的页面?用这种文件格式?当然,打印机本身必须知道打印的是哪一页/打印了多少页。谢谢。

我只能回答这个问题的PostScript部分,不能回答Windows spool队列。我不知道您是如何将PostScript插入spool队列的,但假设您是从应用程序打印的,那么我模糊的记忆表明,是应用程序声明了作业中的页数

打印机不知道PostScript程序包含多少页。事实上,在最一般的情况下,无法确定PostScript程序执行
showpage
操作符的次数。这是因为PostScript是一种编程语言,程序可能在不同的解释器上或在不同的条件下执行不同。例如,它可能会在周二额外打印一页

或者举一个公认愚蠢的例子:

%!

0 1 rand {
  showpage
} for
这将打印随机数目的空白页

有一些约定可以指示PostScript程序需要执行多少页,文档结构约定包含的注释告诉PostScript处理器(不是PostScript解释器,它忽略注释,处理器将PostScript视为数据而不执行它)它有多少页,除其他数据外,如要求的媒体大小、字体等

并非所有PostScript程序都包含此信息,有时提取起来可能会很困难(“atend”值尤其令人讨厌,因为它会迫使处理器读取到文件末尾以查找该值)。此外,人们已经知道将PostScript程序视为乐高积木,只是将它们连接在一起,这使得一开始的评论不可信。如果第一个程序有
%%页:(atend)

大多数打印机确实执行作业服务器循环,这意味着它们可以跟踪正在执行的页面,即使它们不知道将有多少页面


当然,在具有双向接口的打印机上运行的PostScript程序也可以将信息发送回后台打印程序,但不能保证打印机具有双向通信接口,而且,我所知道的打印机在将这些信息发送回计算机时没有遵循任何标准。它应该发送什么?Windows是否与Mac相同?

是的,软件可以从%%Pages中了解页数:正如您所建议的,打印机具有双向支持。但我想不出当我像普通打印(不是原始打印)那样打印时,如何才能得到打印机的页面。我已尝试将telnet插入打印机的ip,但没有给出打印内容和文件中的页面的状态。正如我所说,%%页面可能不可靠,如果您将文件直接注入后台打印程序(而不是从应用程序打印),则然后,后台打印程序无法知道文件中有什么内容(我认为它没有任何智能来查看和确定页数。非PostScript后台打印文件可能缺少有关这方面的任何信息)。如果打印机在stdout上发送数据,那么您可以安排一个EndPage过程在stdout上写入当前页面,但我不知道这是否会影响您,也不知道您将如何处理它。