确定接收的数据是PostScript还是PCL

时间:2012-04-11 16:22:52

标签: printing postscript printer-control-language

我有一个通过tcp / ip接收打印机数据的服务。收到数据后,是否有可靠,有效的方法来检查数据流并确定数据是PostScript还是PCL数据?例如,我可以在数据流的开头找到哪些字符来表示格式?

4 个答案:

答案 0 :(得分:1)

我会添加2¢。

就像其他人在这里提到的那样,你以编程方式识别文档的第一步就是查看前两个字符。如果它以%!开头,那么它是PostScript,如果它以转义字符(十六进制1B,oct 033,ascii 27)开头,很可能PCL将启动使用PCL命令,然后是PCL。这可能会解决您需要处理的99%的文档。如果仍然未知,则可以在文档中搜索showpage字符串。如果是PostScript,则必须有一个showpage来呈现页面。如果你找不到一个,如果文件中有任何转义字符,你知道它是PCL,你可以在PCL一边犯错,如果没有showpage,并且没有转义字符,因为原始文本文件是有效的PCL,打印机可以随时将它们打开。

答案 1 :(得分:0)

后记数据必须以"%!ps"开头。或"%!PS" - 它可能是一个更长的可读字符串,如"%!PS-Adobe-3.0" - 但基本上就是这个。

很可能PCL有类似的签名 - 我记得过去曾经看过它。

答案 2 :(得分:0)

我可能只计算文件中的转义字符数。 PCL将拥有它们。后记将有%的迹象。这不是一个完美的解决方案,但它很简单,我敢打赌它实际上是非常可靠的。

我能看到的唯一“真实”方式是实际解析PCL并解析后记,看看哪个有效。

答案 3 :(得分:0)

根据 PCL 5 General Printing FAQs PCL 文件应以 ESC "E" 开头。我假设必须遵循另一个 ESC 序列。所以我的猜测是以字节 1B 45 1B 开头的文件很可能是 PCL 文件。 这会使不符合此规则的 PCL 文件无法识别。

在我的用例中,始终以 ESC E 开头的 macOS 生成 PCL。