一个小家庭的设置...
我有一台彩色打印机和一台安装了 CUPS 的 Linux 计算机。我想让孩子们打印,但只能以草稿模式,并且只能以灰度打印。
使用 CUPS,我阻止了孩子们的帐户访问打印机。然后,我为相同的硬件打印机设置了第二台打印机,但具有不同的默认选项(草稿和灰度),并允许孩子们访问这台新打印机。
它有效,当他们打印这台新打印机的默认选项时,确实是草稿和灰度。但它们只是默认选项。他们可以改变它。
有没有办法阻止用户更改打印机的选项?
答案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
,并删除关闭选项:
*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
原则上,提供只有一个选项的菜单可能会有效。
或者相反,要将关闭选项颠覆为与打开相同,只需将实现该部件的PostScript 代码(在 中""
)复制并保留这两个选项:On
Off
*TonerSaveMode Off/Not really off: "statusdict/tonersave known{statusdict begin true tonersave end}if"
对于没有选择的选项,应该可以删除该OpenUI/CloseUI
部分,以便用户无法使用它,但我不知道代码是否TonerSaveMode
会输出。你需要尝试一下。 (这OrderDependency
有助于将代码与所有其他发出的代码按照正确的顺序排列。NonUIOrderDependency
可能需要一个 that 来代替)。
在 PPD 的标头中,您可能需要更改NickName
和ModelName
。
答案2
因此,在 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
简单的 !