Skip site navigation (1)Skip section navigation (2)
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>