I've been battling an issue at work for about 6 months now that revolves around some problematic PDF files not printing completely when they are run through the print auditing system for our students. I finally found a workable solution today.
We have two computer labs each containing a Lexmark T644 laser printer and one other T644 outside the first floor lab for laptop users. Each of those has a little ethernet print server box. Our main print server runs CentOS and uses the Linux drivers from Lexmark for printing (hooray vendor support!). CUPS is configured to route jobs through the filter for Papercut (our excellent print auditing software) and those CUPS printers are shared via Samba.
Occasionally a PDF file printed by a student would cut out in the middle of a job and the printer would emit a postscript error similar to the following:
ERROR: undefinedresource OFFENDING COMMAND: findresource STACK: /CSA /O /CSA -mark- /9
The ultimate problem with this error was that the auditing system was not being notified and the full price of the job was deducted from the student's account. So any time this happened, the student had to get in touch with one of us in IT to reclaim the lost credit. Of course, it wasted a bit of toner and paper too (one of these problematic PDF files was 50 pages!).
Printing the offending PDF file directly to the printer's IP port with the Windows Lexmark driver worked, but we can't audit jobs submitted like that (don't tell the students!).
The quick and dirty workaround that we came up with was to have students print the PDF "as an image," but the setting did not persist when Acrobat was closed. Inevitably students forgot to check the option before printing their PDFs and they would occasionally encounter one that would throw the error again.
I'm sure at some point I blamed every link in the chain over the past six months.
I was comparing the Advanced printer settings dialogs using the CUPS driver to go through the auditing system and using the Lexmark driver to go directly via IP when I noticed that the default settings for "Font and Resource Policy" under "Postscript Options" differed. The Lexmark driver defaulted to "Send for Each Page" while the CUPS driver defaulted to "Send by Range". From what I understand, this option controls when and how fonts are sent to the printer. Sending the fonts for each page minimizes RAM utilization on the printer, but takes a little longer to print because some fonts may need to be resent for each page. Sending the fonts by range, it turns out, is what was causing my error.
After inspecting the changes to the registry after modifying this setting, I came up with this registry file (for Acrobat 8) as a permanent solution.
In the end I couldn't blame anyone. How should Acrobat know that it needs to modify its postscript behavior if the driver doesn't tell it to? How should the Windows CUPS driver know?
| Attachment | Size |
|---|---|
| adobe_fix.zip | 410 bytes |