2012-04-11 19 views
1

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

+0

提出されたPostScriptおよび/またはPCLデータ構造では、印刷クライアントは何らかの形で一貫性がありますか?はいの場合は、ファイルの種類を判別するのが非常に簡単です。いいえ、それはもっと多くの努力を伴う... –

+0

はい、彼らは一貫しています。私は以下の答えの情報の組み合わせを使用して終了しました。まず、PJL ENTER LANGUAGEコマンドを探します。私がそれを見つけたら、私はその価値に基づいて決定を下します。それ以外の場合は、すべてのPostScriptデータがDSC規則に準拠する必要があるため、%!PSを検索します。それでも解決できない場合は、クライアントの大半が使用しているので、PCLにデフォルトするだけです。 – NYSystemsAnalyst

答えて

-1

ポストスクリプトデータは、 "%!PS-Adobe-3.0"のように長い読み込み可能な文字列でもかまいませんが、基本的にこれです。

ほとんどのPCLには同様のシグネチャがあります。過去に見たことがあります。

+3

PCLまたはPostScriptの開始前にPJLコマンドを監視する必要があります。最初にPJLコマンドを使用している場合は、PJLコマンドでデータ型が次のように表示されることがよくあります: "@PJL ENTER LANGUAGE = PCLXL" – BBoy

+3

特定の実装でこれが必要な場合がありますが、 '/%!.*/ 'stringはPRLMごとにPostscript言語の要件ではありません。それはDSCの規則の一部です。 –

+0

ENTER LANGUAGEコマンドはどうですか?それは信頼できるのでしょうか? – NYSystemsAnalyst

0

おそらくファイル内のエスケープ文字の数を数えるだけです。 PCLは彼らの塊を持つでしょう。ポストスクリプトは%記号のゴブを持つでしょう。それは完璧な解決策ではありませんが、それは簡単ではなく、実際にはかなり信頼できると思います。

私が見ることができる「実際の」唯一の方法は、実際にPCLを解析してポストスクリプトを解析して、どちらが動作するかを見ることです。

1

私は2¢を追加します。

他の人がここで言及したように、プログラムでプログラムを識別する最初の刺しゅうは、最初の2文字を見ることです。 %!で始まる場合、エスケープ文字(16進数1B、oct 033、ascii )で始まる場合、PCLはPCLコマンドで開始される可能性が非常に高いため、ポストスクリプトです。これにより、処理する必要のある文書の99%が解決される可能性があります。それでも知られていない場合は、showpage文字列を文書で検索できます。 PostScriptの場合は、ページを表示するためのショーページが必要です。あなたが見つけられず、ファイルにエスケープ文字があれば、それはPCLであることがわかります。また、showpageがなくエスケープ文字がない場合、PCL側でエラーが発生する可能性があります。ファイルは有効なPCLであり、プリンタは来るときにそれらを吹き飛ばすことができます。

関連する問題