Is anyone still using /usr/bin/lpr ?

Predrag Punosevac punosevac72 at gmail.com
Thu Oct 31 11:19:48 PDT 2013


On 10/29/13 14:07, Francois Tigeot wrote:
> On Tue, Oct 29, 2013 at 02:23:15AM -0500, Chris Turner wrote:
>> Have a 'modern printer', (deliberately) use lpr+=apsfilter.
>> Works fine- better even.
...
> How can you change print options with it ? I have to change the output
> tray or force black-and white usage on a job-by-job basis

You cann't! LPD and IPP are two fundamentally different network
protocols. In order to have tonner status and similar things you have to
use bi-directional protocol to speak to your printing device. IPP is an
example but not only one of such network printing protocol.

lpd and CUPS are two different spooling (queuing) system (there are many
others). They are used to manage printing jobs that might have been sent
to the same physical device. lpd is very crude and doesn't allow for
complex policies. CUPS is an extreme implementation allowing  very
complex policies. LPRng is an example of improved Berkeley spooling
system which allows for very complex policies but unfortunately doesn't
speak IPP. However even LPRng is incapable to my knowledge in
integrating with Active Directory Protocol and more secure printing
policy schemes.

Finally apsfilter is an example of the user filter which is suppose to
prepare files for printing. Originally printers were able to print only
ASCII code and later PostScript vectorial page description language but
users who want to print pictures (jpeg, png etc), text (dvi, pdf etc)
many other kinds of files. You have three options. To call lpd with
special options hard coded in printcap file for each kind of files, to
promise yourself that you never send anything but PostScript to your
printer or to use something like apsfilter on in my case foomatic filter
to do job for you.

Finally it is worth explaining the concept of printer driver. PostScript
printers do not need drivers. They have PostScript interpreter built in.
Those interpreter used to be very expensive so manufacturers came up
with simpler languages like PCL (printing command language) and built in
interpreters for those languages. Translator from PostScript to PCL is
built in the GhostScript driver package.  Unfortunately many printer
manufacturer came with their own proprietary languages for whom we might
have drivers HPLIP, Splix, GhostScript, Gutenprint etc. Unfortunately
some of those languages are closed source trying to mask the fact that
interpreter for those languages are not built in into printers but
suppose to use operating system resources. Typically those printers have
their proprietary drivers only compiled for Windows and possibly Linux
(more so than MAC).


So long story short we are mixing here many different things. I prefer
to use OpenBSD to DragonFly as my desktop OS but if DragonFly want to
make another splash in Unix world maybe somebody should look into
implementing IPP into lpd and removing legacy code from lpd (in works
from early 70s). There was few years ago similar initiative coming from
NetBSD camp but went nowhere. Google Summer of code or something.

For the record I use lpd with foomatic-rip and my printer speaks PCL5.

Most Kind Regards,
Predrag Punosevac



More information about the Users mailing list