是否可以阻止使用者修改 CUPS 中的列印機選項?
一個小型的家庭設置…
我有一台彩色列印機和一台安裝了 CUPS 的 Linux 電腦。我想讓孩子們列印,但只能在草稿模式下,而且只能在灰度模式下。
使用 CUPS,我阻止了孩子們的帳戶訪問列印機。然後我為相同的硬體列印機設置了第二台列印機,但具有不同的預設選項(草稿和灰度),並允許孩子們使用這台新列印機。
它有效,當他們列印這台新列印機的預設選項時,確實是草稿和灰度。但它們只是預設選項。他們可以改變它。
有沒有辦法阻止使用者更改列印機的選項?
因此,在 meuh 的幫助下,實施一個可行的解決方案實際上非常容易。
編輯列印機的 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
簡單的 !
我想這樣做的唯一方法是複制 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
原則上,提供一個只有一個選項的菜單可能會奏效。
或者相反,為了將 off 選項與 on 相同,可以將實現的 PostScript 程式碼 (in
""
)複製On
到該Off
部分並保留這兩個選項:*TonerSaveMode Off/Not really off: "statusdict/tonersave known{statusdict begin true tonersave end}if"
對於沒有選擇的選項,應該可以刪除該
OpenUI/CloseUI
部分,以便使用者無法使用它,但是我根本不知道TonerSaveMode
程式碼是否得到輸出。你需要嘗試一下。(這OrderDependency
有助於將程式碼與所有其他發出的程式碼按正確的順序排列。NonUIOrderDependency
可能需要一個)。在 PPD 的標題中,您可能需要更改
NickName
andModelName
。