
Mark Trickett writes:
Have continued looking hither and yon and cannot find what specifies invocation of filters and the like, cannot see where there might be a broken pipe.
If you mean the pipeline that cupsd builds to convert arbitrary input data into something the printer can accept, it's a weighted DAG with MIME types as nodes. The terminals (i.e. nodes the printer accepts) are described in the PPD, and are copied into printers.conf (which, despite being in /etc, is constantly being rewritten by cupsd and belongs it /var). The arcs are defined in /usr/share/cups/mime, as are the heuristics it uses to choose a MIME type (it doesn't use libmagic / file (1)). The whole setup is incredibly terrible and you're better off just using a pencil.