1

CUPSジョブ制御ファイルがあります(これらは/ var / spool / cups / cnnnnnにあります)。作成したプリントの実際の寸法を取得する必要があります。

これは私がそれを行うために理解した方法です:

  1. media属性を使用して紙の名前を取得します。(例Letter
  2. 属性からプリンターのURIを取得しprinter-uriます。(例ipp://localhost/printers/MyPrinter
  3. IPP_GET_PRINTER_ATTRIBUTESプリンターのURIを操作に渡し、属性を取得して、プリンター名を取得しprinter-nameます。(例MyPrinter
  4. メソッドにプリンター名を渡すPPDへのパスを取得しますcupsGetPPD
  5. PPDを開き、PPDへのパスをppdOpenFileメソッドに渡します。
  6. PPDと用紙名をppdPageSizeメソッドに渡して、用紙サイズを取得します。

これは機能しますが、少し回り道のようです。必要なものを入手するためのより効率的な方法はありますか?

4

2 に答える 2

1

ジョブ制御ファイルには、印刷に使用されるファイルのすべてのジョブ オプションが含まれます。ジョブオプションには 3 つのタイプがあります。

  1. ユーザーがコマンドラインで、またはいくつかの GUI 要素をクリックすることによって明確かつ明示的に選択されたもの (これらは制御ファイルに表示されます)。
  2. ~/.lpoptionsユーザー固有またはシステム全体のファイルに含まれ、そこから読み取られるため、暗黙的に設定されたもの/etc/cups/lpoptions(ユーザー固有のファイルは~/.cups/lpoptionsCUPS のより新しいバージョンに移行されました (これらのファイルは制御ファイルにも表示されます)。
  3. PPD を解析し、そこに含まれるデフォルト設定を検索することによって CUPS によって追加されたもの ( CUPS はジョブが処理された瞬間にのみ評価するため、これらの設定は制御ファイルには表示されません。これは 2 日後になる可能性があります)使用した場合-o job-hold-until=indefinite

使用されている printqueuename と cupsserver がわかっている場合は、次の 2 つのコマンドを使用して、そのコンボのデフォルトのキュー設定を照会できます。

lpoptions -h cupsserver \
          -U username \
          -d printqueuename

(.)loptionsこれにより、ファイルに記載されているすべての現在の設定が返されます。

lpoptions -h cupsserver \
          -U username \
          -d printqueuename \
          -l

これにより、PPD に含まれるすべてのユーザー選択可能な設定が返されます。アスタリスク*が各オプションのデフォルト設定を示していることに注意してください。また、ここで重要なことに注意して-U usernameください-異なるユーザーは異なるデフォルト設定を使用する可能性があります...

これらのコマンドの結果に注意してくださいPageSize...

于 2010-06-24T18:21:15.530 に答える
0

ステップ 3 と 4 の代わりに、実際には CUPS_GET_PPD リクエストを使用して ppd を直接取得できます。これはより効率的です。

于 2010-03-31T00:47:22.597 に答える