2

tcp/ip経由でプリンターデータを受信するサービスがあります。データを受信したときに、データストリームを調べて、データがPostScriptデータかPCLデータかを判断するための信頼できる効率的な方法はありますか?たとえば、フォーマットを示すためにデータストリームの先頭で探すことができる文字はありますか?

4

4 に答える 4

1

おそらく、ファイル内のエスケープ文字の数を数えるだけです。PCLにはそれらのゴブがあります。Postscript には % 記号のゴブがあります。これは完全な解決策ではありませんが、非常にシンプルであり、実際には非常に信頼できると確信しています。

これを行うことができる唯一の「実際の」方法は、実際に PCL を解析し、postscript を解析して、どちらが機能するかを確認することです。

于 2012-08-06T18:38:07.147 に答える
1

2¢追加します。

他の人がここで述べたように、プログラムでドキュメントを識別するための最初の試みは、最初の 2 文字を調べることです。で始まる場合%!は PostScript です。エスケープ文字 (hex 1B、 oct 033、 ascii 27) で始まる場合は、PCL が PCL コマンドで始まる可能性が非常に高いため、PCL です。これにより、処理が必要なドキュメントの 99% が解決される可能性があります。それでも不明な場合は、ドキュメントを検索して、showpageストリング。PostScript の場合、ページをレンダリングするための showpage が必要です。エスケープ文字が見つからず、ファイルにエスケープ文字が含まれている場合は、それが PCL であることがわかります。showpage がなく、エスケープ文字がない場合は、PCL 側でエラーになる可能性があります。ファイルは有効な PCL であり、プリンターはそれらが来るとそれらを吹き飛ばすことができます。

于 2012-08-08T17:33:29.207 に答える
0

Postscript データは "%!ps" または "%!PS" で始まらなければなりません - "%!PS-Adobe-3.0" のようにもっと長い読みやすい文字列かもしれませんが、基本的にはこれです。

ほとんどの場合、PCL は同様の署名を持っています。過去に見た覚えがあります。

于 2012-04-11T17:56:14.843 に答える
0

PCL 5 General Printing FAQsによると、PCL ファイルは ESC "E" で始まる必要があります。別の ESC シーケンスが続く必要があると思います。したがって、バイト 1B 45 1B で始まるファイルは PCL ファイルである可能性が最も高いと思います。これにより、この規則に従わない PCL ファイルが認識されなくなります。

私の使用例では、最初に ESC E で常に PCL を生成するのは macOS です。

于 2021-04-24T15:37:28.367 に答える