ユーザーがCUPSでプリンタオプションを変更するのを防ぐことはできますか?

ユーザーがCUPSでプリンタオプションを変更するのを防ぐことはできますか?

小規模家族構成...

カラープリンタとCUPSがインストールされているLinuxコンピュータがあります。子供は印刷したいが、ドラフトモードでのみグレースケールでのみ印刷できます。

CUPS を使用して、お子様のアカウントがプリンタにアクセスできないようブロックしました。その後、同じハードウェアプリンタに別のデフォルトオプション(ドラフトとグレースケール)を使用して2番目のプリンタを設定し、子供がこの新しいプリンタにアクセスできるようにしました。

動作します。この新しいプリンタで印刷するときのデフォルトのオプションは、実際にはドラフトとグレースケールです。しかし、これは基本的なオプションです。彼らはそれを変えることができます。

ユーザーがプリンタのオプションを変更できないようにする方法はありますか?

答え1

私が考える唯一の方法は、PPDファイルをコピーし、適切なオプションを削除し、新しいファイル名とモデル名を作成することです。 Adobeのファイル形式はかなり複雑なので(PDF)、これらのオプションは副作用を避けるためにそのままにすることができますが、効果がないように操作できます。たとえば、Brother プリンター PPD には次のセクションがあります。

*OpenUI *TonerSaveMode/Toner Save: PickOne
*DefaultTonerSaveMode: Off
*OrderDependency: 10 AnySetup  *TonerSaveMode
*TonerSaveMode Off/Off: "statusdict/tonersave known{statusdict begin false tonersave end}if"
*TonerSaveMode On/On: "statusdict/tonersave known{statusdict begin true tonersave end}if"
*CloseUI: *TonerSaveMode

これにより、トナーを節約するためのブールオプションが作成され、デフォルト設定はオフになります。デフォルト値をに変更しOnてoffオプションを削除してみることができます。

*OpenUI *TonerSaveMode/Toner Save: PickOne
*DefaultTonerSaveMode: On
*OrderDependency: 10 AnySetup  *TonerSaveMode
*TonerSaveMode On/On: "statusdict/tonersave known{statusdict begin true tonersave end}if"
*CloseUI: *TonerSaveMode

原則として、1つのオプションしかないメニューを提供することが効果的です。

あるいは、逆にoffオプションをonと同じにするには、""ウィジェットを実装するPostScriptコード(in)をコピーし、両方のオプションを保持するだけです。OnOff

*TonerSaveMode Off/Not really off: "statusdict/tonersave known{statusdict begin true tonersave end}if"

選択されていないオプションでは、ユーザーが使用できないようにセクションを削除できる必要がありますが、OpenUI/CloseUIコードからその部分が出力されるかどうかはわかりませんTonerSaveMode。あなたはそれを試す必要があります。 (これはOrderDependency他のすべてのリリースコードと一緒にコードを正しい順序で維持するのに役立ちます。NonUIOrderDependency代わりにAが必要な場合があります。)

PPDヘッダーでNickNameおよびを変更する必要があるかもしれませんModelName

答え2

したがって、miehの助けを借りて実行可能なソリューションを実装することは本当に非常に簡単です。

プリンタのPPDを編集し、カラー設定と印刷モードのGUIエントリを探し、不要なオプションをコメントアウトします(コメントは*%PPDファイルから次の行までです)。

私の場合は、次のようになりました。

*OpenUI *ColorModel/Output Mode: PickOne
*OrderDependency: 10 AnySetup *ColorModel
*DefaultColorModel: KGray
*%*ColorModel RGB/Color: "<</cupsColorSpace 1/cupsBitsPerColor 8/cupsRowStep 0>>setpagedevice"
*%*ColorModel CMYGray/High Quality Grayscale: "<</cupsColorSpace 1/cupsBitsPerColor 8/cupsRowStep 1>>setpagedevice"
*ColorModel KGray/Black Only Grayscale: "<</cupsColorSpace 1/cupsBitsPerColor 8/cupsRowStep 2>>setpagedevice"
*CloseUI: *ColorModel

*OpenUI *OutputMode/Print Quality: PickOne
*OrderDependency: 10 AnySetup *OutputMode
*DefaultOutputMode: FastDraft
*%*OutputMode Normal/Normal: "<</OutputType(0)/HWResolution[600 600]>>setpagedevice"
*OutputMode FastDraft/Draft: "<</OutputType(-2)/HWResolution[300 300]>>setpagedevice"
*%*OutputMode Best/Best: "<</OutputType(1)/HWResolution[600 600]>>setpagedevice"
*%*OutputMode Photo/High-Resolution Photo: "<</OutputType(2)/HWResolution[1200 1200]>>setpagedevice"
*CloseUI: *OutputMode

シンプル!

関連情報