At date and time Sun, 21 Jun 2015 09:18:39 -0700, jgw wrote: | Gerard Lally <lists+netbsd.current.us...@netmail.ie> wrote: | | > (NetBSD 7 amd64) | > | > Is is possible to print to an ethernet-connected printer with just the | > standard NetBSD print commands, without going through CUPS? The printer | > is connected directly to the network switch and has a fixed IP address | > on the LAN; there is no print server. It is a business-class Ricoh | > Aficio MP C2800 Postscript and PCL printer. | > | > I have a hard time getting a conceptual overview of printing in BSD and | > Linux to be honest; it seems to be a bit of a minefield with postscript, | > CUPS, filters, ghostscript, foomatic, drivers, spooling, line printing | > and so on. | > | > At the moment I would like to print a copy of some of the text | > configuration files in /etc but it would be useful eventually to be | > able to print documents formatted with graphics as well. | | As others mentioned, you can just setup BSD lpd. You will likely need to | create a filter for it as well as a spool file. And probably install | ghostscript. I believe the FreeBSD Guide has some info on it. I've been | using it for years with an HPLJ and it works fine for occasional print | jobs. If you want my notes let me know off-list.
That printing section in the FreeBSD Guide is very good! It gives a great overview of the various parts and how they fit together. The overview was what I was missing. Thanks for the reference. I'll study the method below as well when I get back to that network tomorrow. | A few years ago I came across an alternate technique using just netcat/ncat | which is actually very fast if you can avoid dealing with postscript; my | notes are below: | | -- | Printing w/o lpd(8) to a Network Printer: | | Using ncat(1) and an appropriate print filter you can print directly to | a network printer that understands "raw" input. | | For example, the HPLJ-2100 is a PCL-only printer (doesn't understand | Postscript) and listens on port 9100. The following makes use of the | current lpd(8) print filter to process plain text, Postscript and PCL | files: | | % cat cat_sitter.ps | /usr/local/lib/if\-hplj_2100 | ncat 192.168.1.12 9100 | | The filter uses gs(1) (Ghostscript), something like so: | | % gs -q -dSAFER -sDEVICE=lj5gray -sOutputFile=- - | | This requires a lot of CPU cycles and produces rather large PCL outputs. | It's better to produce PCL source files directly if possible: | | ex) | # create a PCL file created two ways: | % groff -ms -Tlj4 my_file.ms > cat_sitter.pcl | % groff -ms my_file.ms | gs -sDEVICE=lj4 -sOutputFile=cat_sitter.PCL - | | # compare the files | % ls -sh1 my_file.{pcl,PCL} | 1.2M my_file.PCL | 3.8K my_file.pcl => over 300x difference! -- Gerard Lally