プリンタ固有のスクリプトを使用してCUPSの「lp」を前処理する方法は?

プリンタ固有のスクリプトを使用してCUPSの「lp」を前処理する方法は?

(How)スクリプトを使用して前処理を自動化できますかlp? ()fileToPrint | script.sh | lp -d myPrinterの間のパイピングは私にlp()を直接実行するソースコードが多く、lp -d myPrinter filetoPrint特にスクリプトに特定のプリンタが1つしか必要ないため、現在ではこれを変更する意図がないため、オプションではありません。

lpoption私は(pseduocode)と言えるこのようなことを考えていますpreprocess myPrinter with script.sh(myOtherPrinterではなくmyPrinterのみ)。

これは可能ですか?

答え1

あなたはできます独自のバックエンドを書く前処理を実行し、通常使用する実際のバックエンドに渡します。プリンタを設定すると、URIにカスタムバックエンドが使用されます。

私は実際にCUPSがローカルパッチLPRngサーバーに印刷できるようにするのと同様のことをしました。

答え2

私は偶然にtea4cups(DebianのPackage is cups-tea4cups)次のように私が望むものを正確に実行できることを発見しました。

# tea4cups.conf
[myprinter] # just the cups printer name
filter: mycommand
# pipes everything though mycommand, like "<input> | mycommand | lp"
# if the printer URI is prefixed with 'tea4cups://'

関連情報