I've experienced this but not exclusively to Canon printers. We have our Macs connected to AD, and I found that 'standard' users only had permission to print; not cancel or resume jobs. I fixed it by giving all users using an AD account "Printer Operator" permissions which allows cancelling and resuming. I generated/deployed a script with the dseditgroup command (using the following pages as reference) and then periodically run the script using JAMF. It may not be the correct or cleanest way to do it, but it appears to have worked in my case. YMMV.
https://discussions.apple.com/thread/2374598
and
https://www.jamf.com/jamf-nation/discussions/7422/print-operator-group-sometime-students-printers-get-paused-and-they-can-t-resume
We have a script that runs at every login (in our labs):
#!/bin/sh
#EMPTYS ALL PRINTER QUEUES THAT ARE PAUSED
sudo cancel -a `lpstat -t | grep disabled | awk '{print $2}'`
#UNPAUSES PAUSED PRINTERS
sudo cupsenable `lpstat -t | grep disabled | awk '{print $2}'`
Been using this for years without issue.
Thank you both for your response. @jmahlman where it says {print $2} do I substitute that will a specific printer name on my end? Or leave it as print $2? Could you maybe outline how you utilize the login script and how I would implement it?
Sorry for the n00bie questions. I haven't done much with printers and login scripts yet. Is it possible to add that script to make it accessible in self service for users to un-pause their printers? Only reason I ask is because we have a lot of users who tend to not reboot. I work in a retail fashion environment where designers are on deadlines and often refuse to reboot. Thanks again everyone!
Which network protocol do your printers use (at command line: lpstat -t)? I usually see this problem with IPP, not LPD.
@jcosma awk splits its input lines on white space (by default) and saves each field as $1, $2 etc. So {print $2} prints the second item returned from the previous command when separated by a space.