triouble with my Deskjet 500
Gary Kline
kline at sage.thought.org
Sun Oct 1 15:13:04 PDT 2006
On Mon, Oct 02, 2006 at 02:49:56AM +1000, Ian Smith wrote:
> Re: freebsd-questions Digest, Vol 152, Issue 13
> On Sun, 1 Oct 2006 freebsd-questions-request at freebsd.org wrote:
> > Message: 30
> > Date: Sat, 30 Sep 2006 17:12:10 -0700
> > From: Gary Kline <kline at sage.thought.org>
> > Subject: triouble with my Deskjet 500
>
> Hi Gary,
>
> > The trouble is that it only prints in ASCII Aand fails to fails
> > to print xv images or anything else PostScript. I'm playing
> > around withthe following in /usr//local/libexec:
> >
[[ ... ]]
> > It's pretty obviously that I can toss the first several lines that
> > came from the original hpif file; this was before I cared about
> > graphics. I lost the ghostscript part when my system had its
> > fatal trap. Anybody out there who has an ancient hp djet500?
> > or can help otherwise. I'm out of ideas.
>
> I ran into exactly this after upgrading 4.5-R to 5.4-R (now 5.5-S); that
> fancy stderr/stdout dance doesn't seem to work &/| be needed anymore. I
> got sick of Mozilla crashing trying to print and dug up this fix, forget
> where/how. Way over commented, but times like this it comes in handy :)
>
> #!/bin/sh
> #% /usr/local/libexec/if-lq850 smithi 6/4/3
> #% v2 29/6/6, maybe the 3>&1 stuff is what doesn't work in 5.4-R?
> #% as advised by FreeBSD handbook, from:
> # ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500
> # as installed in /usr/local/libexec/hpif
> #% modified for printer canon bj10sx (configured as an epson lq850)
>
After fmessing around for an hour I found the bug that was
introduced by the new/"improved"/(free) CUPS' lp*. The *only*
script change [[ at least that I can see ]] is that
"sOutputFile=" now fails to understand /dev/fd/3. I got my old
"hpif working with only-ASCII and your version working with
only-[Gh|P]ostscript, or mostly since your file did print some
ASCII. But for me, it hung for some timeout or <???>.
I dropped in your Postscript working lines, minus the
re-direction stuff and voila! Yes for good old fashioned ASCII
and Postscript both.
Appended if my new hpif. (I have four servers with
/usr/local/libexec/hpif, so
name-change rather than change four /etc/printcaps:-).
thankee, thankee!
gary
PS: file appended. note lines 39-46... .
PPS: comments appreciated; it's hard to *overcomment*, IMHO.
--
Gary Kline kline at thought.org www.thought.org Public service Unix
1 #!/bin/sh
2 #
3 # hpif - Simple text input filter for lpd for HP-PCL based printers
4 # Installed in /usr/local/libexec/hpif
5 #
6 # Simply copies stdin to stdout. Ignores all filter arguments.
7 # Tells printer to treat LF as CR+LF. Writes a form feed character
8 # after printing job.
9
10 ###printf "\033&k2G" && cat && printf "\f" && exit 0
11
12 #
13 # ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500
14 # Installed in /usr/local/libexec/ifhp
15
16 #
17 # Treat LF as CR+LF:
18 #
19 printf "\033&k2G" || exit 2
20
21 #
22 # Read first two characters of the file
23 #
24 IFS="" read -r first_line
25 first_two_chars=`expr "$first_line" : '\(..\)'`
26
27 if [ "$first_two_chars" = "%!" ]; then
28 #
29 # It is PostScript; use Ghostscript to scan-convert and print it.
30 #
31 # Note that PostScript files are actually interpreted programs,
32 # and those programs are allowed to write to stdout, which will
33 # mess up the printed output. So, we redirect stdout to stderr
34 # and then make descriptor 3 go to stdout, and have Ghostscript
35 # write its output there. Exercise for the clever reader:
36 # capture the stderr output from Ghostscript and mail it back to
37 # the user originating the print job.
38 #
39 ###exec 3>&1 1>&2
40 ###/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
41 ###-sOutputFile=/dev/fd/3 - && exit 0
42
43
44
45 /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
46 -sOutputFile=- - && exit 0
47
48 else
49 #
50 # Plain text or HP/PCL, so just print it directly; print a form feed
51 # at the end to eject the last page.
52 #
53 echo "$first_line" && cat && printf "\033&l0H" &&
54 exit 0
55 fi
56
57 exit 2
More information about the freebsd-questions
mailing list