Discussion:
How do I test certain *parts* of CUPS?
Joe Emenaker
2013-01-11 07:39:17 UTC
Permalink
So, I'm stuck on two things with CUPS. First, I'm trying to set it up as an AirPrint server. Avahi helps my iDevices find it and, oddly, I can print *pictures*, but not other documents... so, I'm thinking something's wrong with the conversion from URF to raster or something. Anyway, I'm *also* trying to set up a CUPS PDF printer, and I'm able to have the administration page send print jobs (and the logs say it succeeded) but the PDF's never show up anywhere.

In order to resolve these issues, I've been trying to find a way wherein I could interrupt the queue/filter/backend chain and, at any spot in the chain, dump STDIN to a file, along with a dump of all of the command-line params which were passed. That way, I can figure out which filters are working properly and which ones aren't.

For example, if I could replace some of the "pdfto..." filters with a script which dumped STDIN to a file, then I could see if that filter was really being fed a proper PDF. I guess I could do this by actually replacing the filters with those names, but I'd like to be able to access CUPS' table of filters and "costs", but I can't find where those are.

Also, because it's a pain to have to keep turning on my phone and sending a print job, I'd like to be able to capture the exact stream which is coming from my iPhone/iPad into the IPP port so that I can inspect it, and then easily "inject" this stream into CUPS to simulate an iDevice sending an AirPrint as often as I wanted.

But I haven't found any docs on the net which talk about systematic diagnosis of the *parts* of the CUPS input/scheduler/filter/backend chain. Anybody care to shed some light on the process?
Helge Blischke
2013-01-11 12:41:52 UTC
Permalink
Post by Joe Emenaker
So, I'm stuck on two things with CUPS. First, I'm trying to set it up as
an AirPrint server. Avahi helps my iDevices find it and, oddly, I can
print *pictures*, but not other documents... so, I'm thinking something's
wrong with the conversion from URF to raster or something. Anyway, I'm
*also* trying to set up a CUPS PDF printer, and I'm able to have the
administration page send print jobs (and the logs say it succeeded) but
the PDF's never show up anywhere.
In order to resolve these issues, I've been trying to find a way wherein I
could interrupt the queue/filter/backend chain and, at any spot in the
chain, dump STDIN to a file, along with a dump of all of the command-line
params which were passed. That way, I can figure out which filters are
working properly and which ones aren't.
For example, if I could replace some of the "pdfto..." filters with a
script which dumped STDIN to a file, then I could see if that filter was
really being fed a proper PDF. I guess I could do this by actually
replacing the filters with those names, but I'd like to be able to access
CUPS' table of filters and "costs", but I can't find where those are.
Also, because it's a pain to have to keep turning on my phone and sending
a print job, I'd like to be able to capture the exact stream which is
coming from my iPhone/iPad into the IPP port so that I can inspect it, and
then easily "inject" this stream into CUPS to simulate an iDevice sending
an AirPrint as often as I wanted.
But I haven't found any docs on the net which talk about systematic
diagnosis of the *parts* of the CUPS input/scheduler/filter/backend
chain. Anybody care to shed some light on the process?
As for inspecting the filter chain, I'd recommend to use the cupsfilter
utility and specify the intermediate document format by using the -m switch,
e.g.:
cupsfilter -m application/vnd.cups-pdf inputfile > temp.pdf
where temp.pdf is the result e.g. the pdftopdf filter.
Inspect the mime.convs (or whatever .convs file your CUPS uses) to determine
the intermediate document format.

Helge

Loading...