2011-11-09 21 views
1

A4用紙とA3用紙が挿入された複数のトレイを備えたPostScript 3プリンタに問題があります。 Linuxでは、CUPSシステムを使って、media = a4オプションを指定するか、A4用とA3用の2つの別々のプリンタを定義して、適切な用紙サイズを手動で設定します。PostScriptを使用した自動用紙選択

しかし、このような状況は、常に適切なプリンタを選ぶことを覚えておく必要があるため、最適ではありません。

自動的に選ぶ用紙サイズ 'を生成するプリンタのPPDファイルを変更することは可能です:PostScriptのよう

はチューリング完全言語で、 Red BookBlue Bookにビットを読んだ後、私は疑問を持っていますオプションを選択すると、自動的に正しいメディアサイズが設定されます。多分、プリントアウトのバウンディングボックスのサイズに依存しますか?

たぶん、このような何か開始:私は、ページのバウンディングボックスの情報を取得するにはどうすればよい

PostScriptコード

% set pagesize A4 
/setA4Paper {<</PageSize [595 842] >> setpagedevice} def 
% set pagesize A3 
/setA3Paper {<</PageSize [842 1190] >> setpagedevice} def 
% decide which paper size to take based on the bounding box 
% (array of two elements, width and height) 
% if the bounding box is wider that A4 paper, pick A3 paper instead 
boundingBox 0 get 595 gt {setA3Paper} {setA4Paper} ifelse 

詳細質問

  • ?私が調べることができる標準またはそれ以上の文書がありますか?
  • 私のサンプルコードでPageSizeのように設定すれば、プリンタが正しいトレイを選択するのに十分でしょうか?
  • 用紙トレイを切り替えるためにPSコマンドが必要なプリンタのPPDファイルを調べる方法はありますか?さらに、このプリンタにはサイズごとに2つのトレイがありますので、用紙が切れている場合はプリンタがフルトレイを選択すると良いでしょう。

EDIT

KENS」と答えたから、PostScriptから直接バウンディングボックスを得るための簡単な方法がないと思われます。 CUPSキューに戻す前に、またはプリンタに送信する前に、PSファイルをカスタムスクリプトでルーティングする方法はありますか?

答えて

1

可能であれば、これはメーカーが通常取り入れているものです。どのトレイにどのメディアが含まれているかをプリンタに知らせる必要があります。プリンタによってはこの情報があるものもあれば、そうでないものもあります。いくつかのプリンタでは、固定されています。

詳細な質問: 1)ページデバイス辞書の/ PageSizeキーに、現在要求されているメディアサイズがあります。 setpagedevice演算子は、(他のものの中でも)メディアを要求するために使用されます。 PostScriptファイルにメディア選択演算子(setpagedeviceなど)が含まれていない場合は、mayにBoundingBoxを与えるコメントが含まれている可能性があります。ほとんどの通訳はこれらを無視します(コメントです)が、あなたがそれらを処理することを許可するかもしれません。これは一般的にデバイス依存性が高くなります。

ジョブがそれを定義していない場合は、ページの境界ボックスを取得する方法はありません。これは、PostScript出力がより広い領域をカバーするための正当な理由(およびプリンタのブリードが必要)要求/意図された媒体よりも高い。

2)特定のトレイを選択することは、通常デバイスに依存します。デバイスがどのように機能するかを知る必要があります。私は、メーカーがページデバイス辞書のMediaPositionキーを尊敬していると思っていますが、経験はこれが起こりそうもないと言います。 3)PPD (またはそうでないかもしれない)にトレイ切り替えコードが含まれていても、そうでなくても、PPDを見て把握しなければなりません。既存のトレイが空の場合にフルトレイを選択する場合、これは実際にはPostScriptプログラムの領域外であり、製造元の実装までです。 言語レベル3のデバイスでは、ページデバイス辞書のTraySwitchキーが自動トレイ切り替えを制御します。PostScript言語リファレンスマニュアル(第3版)p403を参照してください。レベル3のデバイスがあるので、運が悪いかもしれません。

あなたはすでにあなたあなたのページ上のマークのバウンディングボックスを与えるだろうBBOXデバイスを使用してのGhostscriptを通じて元のPostScript/PDFを実行することができCUPSを使用しているので。あなた(またはあなたのユーザー)がメディア境界を超えてマークを設定していないことが合理的である限り、次に、その情報を使用して、私が思う、正しい「プリンタ」を選択することができます。

警告:CUPSについてはほとんど分かりません。

+0

あなたの洞察をお寄せいただきありがとうございます。 PPDにトレイ切り替えコードがあれば、リバースエンジニアリングが必要だと思います。プリンタのCUPS設定で用紙サイズを選択できるので、いくつかあるはずです。また、各トレイにはメディアが指定されています。私が思っていたより少し複雑に思えます。 – GorillaPatch

関連する問題