사용자가 CUPS에서 프린터 옵션을 수정하는 것을 방지할 수 있습니까?

사용자가 CUPS에서 프린터 옵션을 수정하는 것을 방지할 수 있습니까?

소규모 가족 구성...

컬러 프린터와 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하고 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)를 복사하고 두 옵션을 모두 유지하면 됩니다.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

따라서 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

단순한!

관련 정보