Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Nov 2002 17:51:12 -0700 (MST)
From:      Warren Block <wblock@wonkity.com>
To:        sroberts@dsl.pipex.com
Cc:        FreeBSD Questions <freebsd-questions@FreeBSD.ORG>
Subject:   Re: Printing to HP845c attached to Win2K - over samba?
Message-ID:  <Pine.BSF.4.21.0211041718580.21771-100000@wonkity.com>
In-Reply-To: <1036435999.42594.18.camel@Demon.vickiandstacey.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 4 Nov 2002, Stacey Roberts wrote:

> Input filter., I take it you're referring to smbprint. Forgive me, but I
> really know very little about printing as it is, and would appreciate
> guidance here.

Okay, quick overview: lpd is the line printer daemon.  It runs all the
time, waiting for print jobs.  The printers it can use are defined in
/etc/printcap.  lpr is used to submit print jobs.

Sometimes you have to translate what is submitted as a print job into
what the printer wants.  For instance, Unix end-of-lines are plain
linefeeds rather than the more common CR/LF.  An input filter can be
used to convert what you have to what you need.  Chapter 11 in the
Handbook goes into this a little bit, and does cover the stairstepping
case.  Input filters are the if= lines in /etc/printcap entries.  As an
example, here's a Perl input filter that will fix the stairstepping
problem by translating linefeeds into CR/LF:

#!/bin/sh
/usr/bin/perl -pe 's/\n/\r\n/s/g;'

Create that as the file crlf in /usr/local/libexec, and use chmod +x to
make it executable.  Then put this in your /etc/printcap:

lp:\
	:lp=/dev/lpt0:\
	:sh:\
	:lf=/var/log/lpd-errs:\
	:if=/usr/local/libexec/crlf:\
	:sd=/var/spool/output/lpd/lp:

That's a printcap entry that says the printer device is /dev/lpt0,
suppress headers, the log file is lpd-errs, the input filter is the file
you just made, and the spool directory is in /var.  You have to create
that spool directory, and set the ownerships.  Again, see the Handbook
Printing chapter for that.  (You may also need to have it add a form
feed at the end of the job, which I think is :ff:, but can't recall
exactly.)

> I've ready through smbprint, and it doesn't mention print-control chars
> that are included anywhere.., so are the carraige-return and line-feed
> control chars to be included by myself before copying smbprint to the
> location referenced here: "`dirname $0`/smbclient"?
 
I haven't used printing through Samba, but I'd get the basic
/etc/printcap setup completed before going on to printing through Samba.

The other option has also been mentioned: apsfilter and other "print
filter" packages generally detect what kind of thing you're printing and
apply the appropriate filters.  I haven't tried them; I'd rather control
/etc/printcap and filtering directly myself.

-Warren Block * Rapid City, South Dakota USA


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0211041718580.21771-100000>