Jump to content

Recommended Posts

Posted

Not sure if this is the right place for this... but!

 

Does anyone have any idea how to write papercut scripts. The school want to restrict colour printing on all accounts that are visible. colour printing can then only be done with a pin number, which the teacher will have to put in. What i need is the accounts to convert to grey scale automatically. So does anyone have any idea how to convert an "account" (not a group) to grey scale? I had the below from papaercut support but i'm a little lost on this one.

 

It would work in conjunction with a print script that would force all jobs to be converted to black & white.

 

You could use the input "inputs.job.selectedSharedAccountName" then force the conversion based on the account.

 

There is already a recipe available within the "Scripting" tab which is found against the printer in PaperCut which you could use a foundation.

 

"Discounted printing for selected shared account"

 

Any help would be massively appreciated.

 

Many Thanks

  • 2 weeks later...
Posted

I found this one on our papercut:

 

"Color print jobs require user confirmation"

 

[color=#AA7700][font=monospace]/*[/font][/color]
[color=#AA7700][font=monospace]* Color print jobs require user confirmation[/font][/color]
[color=#AA7700][font=monospace]*[/font][/color]
[color=#AA7700][font=monospace]* Color printing is expensive so users should be encouraged to print[/font][/color]
[color=#AA7700][font=monospace]* in grayscale whenever they print in color. No confirmation is required[/font][/color]
[color=#AA7700][font=monospace]* for grayscale jobs.[/font][/color]
[color=#AA7700][font=monospace]*/[/font][/color]
[color=#770088][font=monospace]function [/font][/color][color=black][font=monospace]printJobHook[/font][/color][color=#666666][font=monospace]([/font][/color][color=#0000FF][font=monospace]inputs[/font][/color][color=#666666][font=monospace], [/font][/color][color=#0000FF][font=monospace]actions[/font][/color][color=#666666][font=monospace]) [/font][/color][color=#666666][font=monospace]{[/font][/color]
[color=#AA7700][font=monospace]/*[/font][/color]
[color=#AA7700][font=monospace]* This print hook will need access to all job details[/font][/color]
[color=#AA7700][font=monospace]* so return if full job analysis is not yet complete.[/font][/color]
[color=#AA7700][font=monospace]* The only job details that are available before analysis[/font][/color]
[color=#AA7700][font=monospace]* are metadata such as username, printer name, and date.[/font][/color]
[color=#AA7700][font=monospace]*[/font][/color]
[color=#AA7700][font=monospace]* See reference documentation for full explanation.[/font][/color]
[color=#AA7700][font=monospace]*/[/font][/color]
[color=#770088][font=monospace]if [/font][/color][color=#666666][font=monospace]([/font][/color][color=#666666][font=monospace]![/font][/color][color=#004499][font=monospace]inputs[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]job[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]isAnalysisComplete[/font][/color][color=#666666][font=monospace]) [/font][/color][color=#666666][font=monospace]{[/font][/color]
[color=#AA7700][font=monospace]// No job details yet so return.[/font][/color]
[color=#770088][font=monospace]return[/font][/color][color=#666666][font=monospace];[/font][/color]
[color=#666666][font=monospace]}[/font][/color]

[color=#770088][font=monospace]if [/font][/color][color=#666666][font=monospace]([/font][/color][color=#004499][font=monospace]inputs[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]job[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]isColor[/font][/color][color=#666666][font=monospace]) [/font][/color][color=#666666][font=monospace]{[/font][/color]
[color=#AA7700][font=monospace]/* Color job, ask the use if they want to print. The job cost is displayed[/font][/color]
[color=#AA7700][font=monospace]* prominently to encourage users to consider black and white printing instead.[/font][/color]
[color=#AA7700][font=monospace]*/[/font][/color]
[color=#770088][font=monospace]var [/font][/color][color=#0000FF][font=monospace]response [/font][/color][color=#666666][font=monospace]= [/font][/color][color=#004499][font=monospace]actions[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]client[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]promptPrintCancel[/font][/color][color=#666666][font=monospace]([/font][/color]
[color=#AA2222][font=monospace]"This print job is color"[/font][/color]
[color=#666666][font=monospace]+ [/font][/color][color=#AA2222][font=monospace]" and costs " [/font][/color][color=#666666][font=monospace]+ [/font][/color][color=#004499][font=monospace]inputs[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]utils[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]formatCost[/font][/color][color=#666666][font=monospace]([/font][/color][color=#004499][font=monospace]inputs[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]job[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]cost[/font][/color][color=#666666][font=monospace])[/font][/color]
[color=#666666][font=monospace]+ [/font][/color][color=#AA2222][font=monospace]".  You can save money by printing the job in grayscale.

" [/font][/color]
[color=#666666][font=monospace]+ [/font][/color][color=#AA2222][font=monospace]"Do you want to print this job?"[/font][/color][color=#666666][font=monospace],[/font][/color]
[color=#666666][font=monospace]{[/font][/color][color=#AA2222][font=monospace]"dialogTitle" [/font][/color][color=#666666][font=monospace]: [/font][/color][color=#AA2222][font=monospace]"Color print job"[/font][/color][color=#666666][font=monospace], [/font][/color]
[color=#AA2222][font=monospace]"dialogDesc"  [/font][/color][color=#666666][font=monospace]: [/font][/color][color=#AA2222][font=monospace]"Consider printing in grayscale to reduce costs"[/font][/color][color=#666666][font=monospace]}[/font][/color][color=#666666][font=monospace])[/font][/color][color=#666666][font=monospace];[/font][/color]
[color=#770088][font=monospace]if [/font][/color][color=#666666][font=monospace]([/font][/color][color=#004499][font=monospace]response [/font][/color][color=#666666][font=monospace]== [/font][/color][color=#AA2222][font=monospace]"CANCEL" [/font][/color][color=#666666][font=monospace]|| [/font][/color][color=#004499][font=monospace]response [/font][/color][color=#666666][font=monospace]== [/font][/color][color=#AA2222][font=monospace]"TIMEOUT"[/font][/color][color=#666666][font=monospace]) [/font][/color][color=#666666][font=monospace]{[/font][/color]
[color=#AA7700][font=monospace]// User did not respond, cancel the job and exit script.[/font][/color]
[color=#004499][font=monospace]actions[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]job[/font][/color][color=#666666][font=monospace].[/font][/color][color=black][font=monospace]cancel[/font][/color][color=#666666][font=monospace]([/font][/color][color=#666666][font=monospace])[/font][/color][color=#666666][font=monospace];[/font][/color]
[color=#770088][font=monospace]return[/font][/color][color=#666666][font=monospace];[/font][/color]
[color=#666666][font=monospace]}[/font][/color]
[color=#666666][font=monospace]}[/font][/color]
[color=#666666][font=monospace]}[/font][/color]
[color=black][font=monospace]​[/font][/color]

Posted

Continuation...

And this one; "Convert jobs with a high number of color pages to grayscale"

 

[color=#AA7700]/*[/color]
[color=#AA7700]* Convert jobs with a high number of color pages to grayscale (or cancel)[/color]
[color=#AA7700]*[/color]
[color=#AA7700]* Users may accidentally (or without thinking) print multi-page documents with[/color]
[color=#AA7700]* many color pages.  When printing jobs with a high number of colour pages[/color]
[color=#AA7700]* (e.g. >20), users will be given a choice to either convert their job to[/color]
[color=#AA7700]* grayscale or cancel it.  Users who are not running the client software will[/color]
[color=#AA7700]* have their jobs canceled automatically.[/color]
[color=#AA7700]*[/color]
[color=#AA7700]* NOTE: this script requires page-level color detection to be enabled on the[/color]
[color=#AA7700]* printer.[/color]
[color=#AA7700]*/[/color]
[color=#770088]function [/color]printJobHook[color=#666666]([/color][color=#0000FF]inputs[/color][color=#666666], [/color][color=#0000FF]actions[/color][color=#666666]) [/color][color=#666666]{[/color]
[color=#AA7700]// the maximum number of color pages before prompting to convert / cancel[/color]
[color=#770088]var [/color][color=#0000FF]MAX_COLOR_PAGES [/color][color=#666666]= [/color][color=#228811]20[/color][color=#666666];[/color]
[color=#AA7700]// message displayed to the user asking if they would like to convert they job[/color]
[color=#AA7700]// to grayscale or cancel it[/color]
[color=#770088]var [/color][color=#0000FF]CONVERT_MESSAGE [/color][color=#666666]= [/color][color=#AA2222]'Your job contains more than the maximum allowed '[/color]
[color=#666666]+ [/color][color=#AA2222]'number of color pages.  Would you like to '[/color]
[color=#666666]+ [/color][color=#AA2222]'convert your job to grayscale?  Selecting "No" will cancel the job.'[/color][color=#666666];[/color]

[color=#AA7700]/*[/color]
[color=#AA7700]* This script will need access to the number of color pages in the job, which[/color]
[color=#AA7700]* is available after job analysis is complete. If job analysis is not[/color]
[color=#AA7700]* complete we exit here. See the user manual for more details.[/color]
[color=#AA7700]*/[/color]
[color=#770088]if [/color][color=#666666]([/color][color=#666666]![/color][color=#004499]inputs[/color][color=#666666].[/color]job[color=#666666].[/color]isAnalysisComplete[color=#666666]) [/color][color=#666666]{[/color]
[color=#770088]return[/color][color=#666666];[/color]
[color=#666666]}[/color]

[color=#770088]if [/color][color=#666666]([/color][color=#004499]inputs[/color][color=#666666].[/color]job[color=#666666].[/color]totalColorPages [color=#666666]> [/color][color=#004499]MAX_COLOR_PAGES[/color][color=#666666]) [/color][color=#666666]{[/color]
[color=#770088]if [/color][color=#666666]([/color][color=#004499]inputs[/color][color=#666666].[/color]client[color=#666666].[/color]isRunning[color=#666666]) [/color][color=#666666]{[/color]
[color=#AA7700]// User is running the client software. Ask if they want to convert to[/color]
[color=#AA7700]// grayscale or cancel.[/color]
[color=#770088]var [/color][color=#0000FF]response [/color][color=#666666]= [/color][color=#004499]actions[/color][color=#666666].[/color]client[color=#666666].[/color]promptYesNo[color=#666666]([/color][color=#004499]CONVERT_MESSAGE[/color][color=#666666])[/color][color=#666666];[/color]

[color=#770088]if [/color][color=#666666]([/color][color=#004499]response [/color][color=#666666]== [/color][color=#AA2222]'NO'[/color][color=#666666]) [/color][color=#666666]{[/color]
[color=#004499]actions[/color][color=#666666].[/color]log[color=#666666].[/color]debug[color=#666666]([/color][color=#AA2222]'User chose to cancel their job.'[/color][color=#666666])[/color][color=#666666];[/color]
[color=#004499]actions[/color][color=#666666].[/color]job[color=#666666].[/color]cancel[color=#666666]([/color][color=#666666])[/color][color=#666666];[/color]
[color=#666666]} [/color][color=#770088]else [/color][color=#770088]if [/color][color=#666666]([/color][color=#004499]response [/color][color=#666666]== [/color][color=#AA2222]'TIMEOUT'[/color][color=#666666]) [/color][color=#666666]{[/color]
[color=#004499]actions[/color][color=#666666].[/color]log[color=#666666].[/color]debug[color=#666666]([/color][color=#AA2222]'Dialog timed out, canceling job.'[/color][color=#666666])[/color][color=#666666];[/color]
[color=#004499]actions[/color][color=#666666].[/color]job[color=#666666].[/color]cancel[color=#666666]([/color][color=#666666])[/color][color=#666666];[/color]
[color=#666666]} [/color][color=#770088]else [/color][color=#666666]{[/color]
[color=#004499]actions[/color][color=#666666].[/color]log[color=#666666].[/color]debug[color=#666666]([/color][color=#AA2222]'User chose to convert their job to grayscale.'[/color][color=#666666])[/color][color=#666666];[/color]
[color=#004499]actions[/color][color=#666666].[/color]job[color=#666666].[/color]convertToGrayscale[color=#666666]([/color][color=#666666])[/color][color=#666666];[/color]
[color=#666666]}[/color]
[color=#666666]} [/color][color=#770088]else [/color][color=#666666]{[/color]
[color=#004499]actions[/color][color=#666666].[/color]log
[color=#666666].[/color]debug[color=#666666]([/color][color=#AA2222]'Canceling job due to high number of color pages and user '[/color]
[color=#666666]+ [/color][color=#AA2222]'not running client software.'[/color][color=#666666])[/color][color=#666666];[/color]
[color=#004499]actions[/color][color=#666666].[/color]job[color=#666666].[/color]cancel[color=#666666]([/color][color=#666666])[/color][color=#666666];[/color]
[color=#666666]}[/color]
[color=#666666]}[/color]
[color=#666666]}[/color]

 

You could combine the two to make one, I would do it but i'm a little busy.

 

Just grab the actions.job.convertToGrayscale(); and mix it with the other one

Posted

The 2nd one looks good, but im not sure how to make it come up for certain accounts? So if i select the colour account i wouldnt want this box to appear, but if i picked a B/W account i want it to come up... any ideas?

 

/*

* Convert jobs with a high number of color pages to grayscale (or cancel)

*

* Users may accidentally (or without thinking) print multi-page documents with

* many color pages. When printing jobs with a high number of colour pages

* (e.g. >20), users will be given a choice to either convert their job to

* grayscale or cancel it. Users who are not running the client software will

* have their jobs canceled automatically.

*

* NOTE: this script requires page-level color detection to be enabled on the

* printer.

*/

function printJobHook(inputs, actions) {

// the maximum number of color pages before prompting to convert / cancel

var MAX_COLOR_PAGES = 0;

// message displayed to the user asking if they would like to convert they job

// to grayscale or cancel it

var CONVERT_MESSAGE = 'Your job contains more than the maximum allowed '

+ 'number of color pages. Would you like to '

+ 'convert your job to grayscale? Selecting "No" will cancel the job.';

 

/*

* This script will need access to the number of color pages in the job, which

* is available after job analysis is complete. If job analysis is not

* complete we exit here. See the user manual for more details.

*/

if (!inputs.job.isAnalysisComplete) {

return;

}

 

if (inputs.job.totalColorPages > MAX_COLOR_PAGES) {

if (inputs.client.isRunning) {

// User is running the client software. Ask if they want to convert to

// grayscale or cancel.

var response = actions.client.promptYesNo(CONVERT_MESSAGE);

 

if (response == 'NO') {

actions.log.debug('User chose to cancel their job.');

actions.job.cancel();

} else if (response == 'TIMEOUT') {

actions.log.debug('Dialog timed out, canceling job.');

actions.job.cancel();

} else {

actions.log.debug('User chose to convert their job to grayscale.');

actions.job.convertToGrayscale();

}

} else {

actions.log

.debug('Canceling job due to high number of color pages and user '

+ 'not running client software.');

actions.job.cancel();

}

}

}

  • 2 months later...
Posted (edited)

Hi Frut, I may be able to help, but your original request is a little misleading. I'm guessing that we are talking staff and students.

do you have just two accounts? one for colour and one for mono associated to students

if so -how does this sound ?

students can choose which account,

if they choose MONO then it will come out in mono

if they choose colour, it will prompt for a code, which if correct will come out in colour

if the code entered is wrong, it gets cancelled with a message.

 

Do you really need colour and mono accounts? you can always report afterwards to see colour and mono work. Your script could do the same thing but with one account.

Edited by ukwebb
Posted

I think may do what you're after

 

it will give the end user a prompt only if they send a colour job :

Do you really need this in colour?

if they answer no - it will print it in Mono

if they answer yes, it will prompt for a release code

if the code is entered wrong, the job is cancelled

if correct - it prints

 

the code is two digits of the hour and two digits for the current date

ie 09:00 am on 23 March would yield the code 0923

giving a code which can be worked out by a staff member, but tricky for the kids to guess at later on as it changes every hour

 

hope it helps

 

 

function printJobAfterAccountSelectionHook(inputs, actions) {

 

if (!inputs.job.isAnalysisComplete) {

return;

}

 

 

if (inputs.job.isColor) {

 

var message = '

Do you need this job in Colour?

';

 

var choices = ["No, Black and White will be fine", "Yes, I need it in Colour"] ;

 

var options = {

'questionID': message.toString(),

'fastResponse': true,

'dialogTitle': 'Colour Mode Confirmation',

'dialogDesc': 'Do you need this job in Colour?',

'defaultChoice' : "No, Black and White will be fine"

};

 

var ColourMode=actions.client.promptForChoice(message, choices, options);

 

if (ColourMode == "No, Black and White will be fine") { // a black and white job has been requested

actions.job.convertToGrayscale();

actions.job.addComment('Job Converted to Greyscale');

return;

}

else

{ // a colour job has been requested

 

// code is hours and date combined into a four digit number

var code=new String(inputs.job.date.getHours())+String(inputs.job.date.getDate()) ;

 

var message = '

Please enter a valid approval code to print this job.

';

 

 

 

// comment this line out after testing - simply displays the passcode for easy debugging

var message = '

Please enter a valid approval code to print this job.

'+code+'';

 

 

 

 

var options = {

'questionID': message.toString(),

'fastResponse': true,

'dialogTitle': 'Enter Approval Code',

'dialogDesc': 'An approval code is required to print this job.',

'fieldLabel': 'Approval Code'

};

 

approvalCode = actions.client.promptForPassword(message, options);

 

if (approvalCode == 'CANCEL' || approvalCode == 'TIMEOUT' || approvalCode !== code) {

// user canceled the dialog, took too long to answer or entered a wrong code

actions.client.sendMessage('No valid approval code entered. ' +

'Your job will be canceled.');

actions.job.addComment('No valid approval code entered');

actions.job.cancel();

return;

}

}

}

 

 

}

 

  • Thanks 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...