Date: Fri, 26 Sep 1997 13:32:57 +0200 From: Robin Huiser <robinh@htsa.hva.nl> To: Doug Lo <jwlo@ms11.hinet.net>, robinh@htsa.htsa.hva.nl, FreeBSD Questions Mailing List <freebsd-questions@FreeBSD.ORG> Subject: Re: printer Message-ID: <342B9D61.46244E25@htsa.hva.nl> References: <199709242157.HAA25783@smmcroute.smmc.qld.edu.au> <19970924195634.48713@my.domain> <342A31D8.5ECDCE4F@htsa.hva.nl> <342AA45A.E31E5B3B@ms11.hinet.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Doug Lo wrote: > Robin, > > I'm using HP 690c. but I can't print postscript files. when I type lpr xxx.ps, it > still prints > "plain text". Would you tell me how to solve it? > > Thanks in advance, > Doug. Hello Doug! If you want to print postscript jobs on your HP 690c you have to install a printer filter which detects what kind of data you are sending to the printer (eg. postscript, plain text, etc...) When you try to print postscript with [lpr xxx.ps] make sure that the first line of the postscript-file contains : %!PS. Make sure you have the following write/exec permissions for the filter: -r-xr-xr-x 1 root wheel - 946 Aug 12 11:08 if-deskjet and the Alladin Ghostscript package installed! Script and printcap file: First create in /etc/printcap the following line: deskjet|lp|HP Deskjet 694-C bubblejet printer:\ :sh:sd=/var/spool/lpd/deskjet:lp=/dev/lpt0:mx#0:\ :if=/usr/local/libexec/if-deskjet: * It tells FreeBSD that you have a printer connected to /dev/lpt0 (LPT1). * Your spool-directory is /var/spool/lpd/deskjet (CREATE IT!!!) * Because postscript jobs are sometimes of a very *LARGE*,size (For example if you print a picture with xv), I have set the mx-field to 0. (No size limits when printing a job). * The filter is in /usr/local/libexec/if-deskjet (CREATE IT!!!) Filter: if-deskjet -- BEGIN HERE -- #!/bin/sh # # if-hp - Postscript level 3 and text input filter for lpd # Installed in /usr/local/libexec/if-hp # # Textmode: simply copies stdin to stdout. Ignores all filter arguments # Postscript: run gs to convert the text you want to print # Add a formfeed after each job # # Some handy functions # fatal() { echo "$@" 1>\&2 exit 2 } # # Set LF to LF+CR # printf "\033\&k2G" || fatal "Cannot initialize printer" # # Read first two characters of the file # read first_line first_two_chars=`expr "$first_line" : '\(..\)'` if [ "$first_two_chars" = '%!' ]; then # # It's postscript; use Ghostscript to scan-convert and print it # /usr/local/bin/gs -dSAFER -dNOPAUSE -sPAPERSIZE=a4 -q -sDEVICE=cdj550 -sOutpu tFile=- - && exit 0 else # # Plan text or HP/PCL. so just print it directly; print a form # at the end to eject the last page # echo $first_line && cat && printf "\f" && exit 0 || exit 2 fi exit 2 -- CUT HERE -- Well, if you have any questions, you know where to find me! Greets, -- Robin Huiser ,,, (o o) ()========================oOO==(_)==OOo==========================() Robin Huiser HVA Faculteit Electrotechniek & Informatica E-mail: robinh@htsa.hva.nl Important Unix command: echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq' | dc
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?342B9D61.46244E25>