Creating LPD Filters

There really should be no reason you'd need to do this on any modern Linux, but I had a client with an old RedHat 7.0 system who wanted to control the output to a laser printer, specifically to make it print Landscape orientation. Hard to believe, but "printtool" on that version provided no such option.

If you look at /etc/printcap on such a system, you'll find that the "if" points to the "filter" script in the /var/spool/lpd/printername directory. That in turn is a symbolic link to a filter. You can replace that filter with your own.

Again, ordinarily you would never want to do that, especially on more modern Linuxes.

To replace it, first cd to /var/spool/lpd/printername and then "rm filter". That's important; if you don't rm it, you'll be writing over the systems filter. I replaced it with this:


#!/bin/bash
(
        pagelen="45";
        lmargin=6;
        echo -e "\033E\c"	# Reset printer.
        echo -e "\033&l1O\c"    # landscape
        echo -e "\033&l${pagelen}P\c"
        echo -e "\033&a${lmargin}L\c"
        echo -e "\033&k2S\c"   #compressed
        cat -
) | /usr/bin/crnl
 

I also created /usr/bin/crnl, which is just:

#!/usr/bin/perl
while (<>) {
  chomp;
  print "$_\r\n";
}
 

And that's another script you wouldn't need on any modern Linux because your printer creation tool has adding CR's as an option.

So: ancient stuff, pay no attention to any of this nowadays. Put here just to help out someone stuck with an old system.



Got something to add? Send me email.




Increase ad revenue 50-250% with Ezoic


More Articles by

Find me on Google+

© Anthony Lawrence



Kerio Samepage


Have you tried Searching this site?

Support Rates

This is a Unix/Linux resource website. It contains technical articles about Unix, Linux and general computing related subjects, opinion, news, help files, how-to's, tutorials and more.

Contact us