DragonFly On-Line Manual Pages
RPRINT(1) DragonFly General Commands Manual (con) RPRINT(1)
NAME
rprint - remote printing utility using a raw bidirectional tcp connection
SYNOPSIS
rprint [-a number_of_attempts,delay_in_seconds] [-b buffer_size] [-d]
[-e] [-E] [-f file_name] [-i number_of_attempts,delay_in_seconds]
[-l] [-p port_number[,port_number]]
[-r number_of_attempts,delay_in_seconds]
[-s final_delay_in_seconds] [-t timeout_in_seconds] [-u]
[-w warning_period_in_seconds] [-x xmit_delay_in_seconds]
{printer_name | printer_address}
DESCRIPTION
The rprint utility establishes a bidirectional raw tcp connection to a
network printer, usually on port 9100. In case of PostScript(TM)
printers, rprint may be directed to query the printer for accounting and
printer status information.
Although rprint can be used interactively, too, it is normally be invoked
by an lpd(8) input filter program.
OPTIONS
Some options are applicable for PostScript(TM) printers only and
distinguished from the others by the leading string (PS) in the
description text.
Available options are:
-a number_of_attempts,delay_in_seconds
(PS) Inquires the page counter of the printer before sending any
data and after having sent all data. The inquiry is done at less
once, but normally multiple times until either two consecutive
inquiries return the same page count or the maximal number of
attempts given by the first part of the argument would be
exceeded. Between each pair of inquiries there will be a delay
the amount of which is given by the second part of the argument
in seconds. Finally, the total number of pages printed will be
calculated and printed on standard output.
-b buffer_size
Sets the size of the send and receive buffer in bytes; rprint
will attempt to transmit data to the printer in packets of this
size. The default buffer size is 4096 bytes.
-d Turns on debug mode. All data sent and received as well as some
additional information will be printed to the standard error
output.
-e (PS) Causes rprint to send an end-of-file character after print
job transmission and to wait for an acknowledgement.
-E (PS) Similar do -e, but causes rprint to wait for an
acknowledgement only for the time period specified with -a or -s.
-f file_name
Name of the file containing the data to print. If this options is
not specified, data to send to the printer are read from standard
input.
-i number_of_attempts,delay_in_seconds
(PS) rprint will inquire the printer status before sending and
after having sent all data and will wait for the printer to be
idle before taking any other action. The inquiry will be done for
the specified number of times with a delay of the specified
number of seconds between each inquiry. Please note that many
PostScript(TM) printers will never report an idle status after a
tcp connection has been established.
-l Literal printing; needed for transmitting binary data. In normal
non-literal operation, rprint will replace each byte of the print
data representing one of the characters ^C (003), ^D (004) and ^T
(020) by a space character due to their special meaning for
PostScript(TM) interpreters.
-p port_number,[port_number]
Port numbers on the printer side to send data to and to receive
data from. If only one port number is specified, it will be used
for sending and receiving data. If this option is not specified,
rprint will assume the jetdirect port 9100 by default which is
used by most printer network interfaces for raw tcp
communication. Please note that the lpd(8) printing protocol
according to RFC1179 is not implemented in rprint and thus rprint
will not be able to make use of a connection to a printer on port
515.
-r number_of_attempts,delay_in_seconds
By default, rprint will retry to establish a connection to a
network printer for 60 times with a delay of one second before
each retry if the connection cannot be established immediately.
Different values can be specified here.
-s final_delay_in_seconds
After having sent all data to the printer, rprint will wait some
time for an unrequired and possibly delayed printer reply. The
default value for this time is five seconds, different values can
be specified here. A delay time specified by -a will override any
value given with -s.
-t timeout_in_seconds
Specifies a timeout value in seconds after which rprint will give
up to wait for a printer reply required by one of the options -a,
-e, -i or -u. The default value is 1800 seconds. Similarly,
rprint will give up to send data to the printer after this time
if the printer does not accept data anymore.
-u (PS) Causes rprint to inquire the printer status before sending
and after having sent all data.
-w warning_period_in_seconds
While trying to send data to the printer without success, or
while waiting for a printer reply required by one of the options
-a, -e, -i or -u, rprint will write warning messages to the
system log each number of seconds specified here. If this options
is not specified, the default value will be 300 seconds.
-x xmit_delay_in_seconds
Network printers are often not capable to receive data with the
same data rate computer systems could achieve when sending to an
equivalent counterpart. Thus rprint will delay the next attempt
to transmit a packet by the time quantum given here if the
printer is not ready to receive data. The default value of the
transmit delay time is 0.1 seconds. Whereas in general rprint
accepts integer values as arguments only, here and only here a
floating point value may be given.
IMPLEMENTATION NOTES
rprint installs handlers for the signals SIGINT, SIGPIPE and SIGTERM and
tries to shut down a connection to a printer gently after SIGINT or
SIGTERM have been received.
An unexpected connection loss indicated by SIGPIPE will be written to the
system log.
EXAMPLES
A simple example working with nearly all types of network printers
offering a raw tcp port 9100 is:
rprint -f printjob.ps -l 192.168.1.55
192.168.1.55 is assumed to be the ip address of the network interface of
the printer in this example.
When sending to a Hewlett Packard LaserJet 8000 DN printer in
PostScript(TM) mode (see BUGS section), the next example will apply:
rprint -a6,10 -e -i60,1 -p9100 hp8000
hp8000 is assumed to be the hostname of the printer resolvable by the
system. Please note that there is some experimenting necessary for each
printer model to find out the applicable options and to adjust the
corresponding arguments.
When invoking rprint within an input filter used by lpd(8) the following
skeleton may help to code the input filter:
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
rprint 192.168.1.55 1>&2 && exit 0
exit 2
In the printcap(5) file, the printer will be be defined like a local
printer. No real device file will be assigned, of course, but e.g.
lp=/dev/null may be used.
DIAGNOSTICS
rprint writes some information to standard error output in an abbreviated
manner while communicating with the printer. The extent of information
given depends on the options specified. Following example resulting from
the second example given above (Hewlett Packard LaserJet 8000 DN) will be
used for an explanation:
i2098...............16x.16x.16x.16x.16x.16x.16x.16x.$i2101
#3 page(s)
The letter i shows that the printer is idle. The numbers 2098 and 2101
are the values of the page counter before sending and after having sent
the print job. Each dot . indicates a data packet (the size of which is
equal to the buffer size) that has been sent to the printer. After 16
packets have been sent, only each 16th packet transmission is shown by
16x. The dollar sign $ shows that the printer has acknowledged the end-
of-file character sent by rprint after transmitting all data. The line #3
page(s) is written to standard output and gives the number of pages
printed; it may be used for accounting purposes.
The character indicating the status of the printer may be one of the
following:
b busy
e error
i idle
n initializing
o offline
p printing
r warming
u unknown
w waiting
Instead of the dollar sign $ a colon : will be printed to indicate the
end of data transfer if end-of-file acknowledgement by the printer is not
required. If it is required but missing an exclamation point ! will be
printed.
rprint should print self-explaining error messages to the standard error
output in case of error conditions.
RETURN VALUES
The exit code rprint returns to the parent process may take one of the
following values:
0 Nothing went wrong, data transmission has been successful.
1 An invalid option, option argument, printer name or printer address
has been given, or memory allocation during program initialization
failed.
2 The file containing the data to print or the streaming socket could
not be opened, or the latter one could not be set to non-blocking, or
the connection could not be established, or the printer was not idle
or did not report the page counter or the status information
correctly, or the signal handlers could not be installed or de-
installed, or the connection timed out.
3 The printer reported a PostScript(TM) error within the print job and
ignored the rest of the job.
SEE ALSO
printcap(5), lpd(8)
HISTORY
rprint has originally been developed for FreeBSD 2.1.5-RELEASE and later
been ported to newer releases. It is not part of the base system.
BUGS
Some of the special options of rprint useful for PostScript(TM) printers
only require the PostScript(TM) interpreter already to be active when the
tcp connection gets established. These options do not work with a printer
automatically selecting an interpreter depending on the data to print.
For example, Hewlett Packard printers offering PostScript(TM) or PCL(TM)
selection automatically depending on the print job, have to be configured
with PERSONALITY=PS to disable automatic selection.
AUTHOR
Konrad Heuer <kheuer@gwdu60.gwdg.de>
DragonFly 6.5-DEVELOPMENT June 19th, 2001 DragonFly 6.5-DEVELOPMENT