2008-09-16 18 views
2

私はカップで印刷するLinuxアプリを持っていますが、印刷してからすぐにアプリケーションを終了すると、印刷結果が表示されないことに気付きました。だから私は、私のアプリは実際にそれが終了する前にプリンタから出てくるのを待たなければならないと仮定します。CUPSを使った印刷、いつ私のアプリケーションを終了できますか?

私のアプリが生成するポストスクリプトファイルを印刷するのにlibcupsを使用しています。だから私は、ファイルを印刷するコマンドを使用し、私のアプリに戻って戻ってきます。だから私のアプリは、それがまだそれを作っていないと思うとき、ドキュメントがプリンタのキューにあると思う。だから私のすべてのユーザがシステムトレイのプリンタアイコンの画面を見なければならないのではなく、むしろコードで解決策をとっているので、本当に却下される前に試して終了すると、 。また、私が生成するファイルは一時ファイルなので、いつ終了するのかを知ることができれば、削除することができます。

+0

印刷ポストスクリプト以外に、どのように印刷しますか? libcupsやコマンドラインユーティリティを使用していますか? –

+0

私のコードはポストスクリプトファイルを生成し、libcupsを使ってそれを印刷します。私はコマンドラインを使用していません。 – KPexEA

答えて

0

あなたのアプリは、終了時にまだ印刷が完了していない可能性があります。 PDFやその他の文書を印刷するためにevinceを使用している場合、これは既知のバグです。印刷操作が進行中であることを視覚的に確認することはできません。印刷ジョブが送信されると、実際の印刷が完了するまで、システムトレイにプリンタアイコンが表示されます。システムトレイのプリンタアイコンをクリックして、現在実行中のジョブと保留中のジョブを確認できます。

1

あなたのCUPS Webインターフェイス(localhost:631)またはCUPSに表示されているものを見てみると、CUPSがそのジョブを受け取ったことを示すとすぐに、アプリケーションを終了できます。

1

lpr & lpqのような印刷スプールサービスを使用することはどうですか?

+0

'lpr'自体は印刷スプールサービスではありません。実際の印刷スプールサービスにジョブを送信するのはクライアントコマンドです。 'lpq'自体は印刷スプールサービスではありません。実際の印刷スプールサービスにクエリを送信するのはクライアントコマンドです。 実際の印刷スプールサービスは 'lpd'です。あるいはCUPS: 'cupsd'で。 –

1

用紙がプリンタから出るまで待つ必要はありません。しかし、あなたの一時ファイルがスプール・アエレア(通常は/var/spool/cups/)でcupsdによって完全に受信されるまで待つ必要があります。

コマンドラインで(CUPS lpコマンドまたはlprコマンドのいずれかを使用して)印刷すると、シェルプロンプトが返された場合にジョブが進行中であることがわかります(コマンドは送信ジョブのCUPSジョブIDを報告する)終了コード($?)が0の場合。

あなたが望むものを達成するために使用しているlibcupsとどの関数呼び出しの部分を示すのではありません。これをやらなければならない場合は、IPP関数cupsSendRequestを使用し、次にcupsGetResponseを使用して結果を知りたいと思います。

+0

私はcupsPrintFile関数を呼び出しています。 – KPexEA