LPRng-HOWTO: 15 Oct 2001 (For LPRng-3.7.9)
Prev | Chapter 15. Job Processing | Next

# 15.5. Printing Banners

Options used:

- `ab` FLAG Always print banner (default FALSE)

- `be=`End banner generator program

- `bl=`Short banner line format

- `bp=`Banner generator program

- `bs=`Start banner generator

- `generate_banner` FLAG Generate banner for forwarded jobs

- `hl` FLAG Banner (header) Last

- `of=`Banner and File Separator Filter

- `sb` FLAG Short banner (default FALSE)

- `sh` FLAG Suppress header (banners) (default FALSE)

Banner printing is one of the more complicated configuration options of LPRng. This is due mainly to historical evolution of the software, as well as a lack of a well defined standard for filter responsibilities. In the original BSD print spoolers, the philosophy was that banner printing should be delegated to the filters, as they were the most aware of the capabilities of the printers. This required an out of band method to convey banner printing information to the filter, and resulted in a complicated interface. The original interface was:

1. The filter doing banner printing was invoked as a special `:of` filter, or passed a special flag.

2. The print spooling software would send a special single line of information telling it what the banner information should be. Note that this line was never documented except for the source code, and was inconsistent from version to version. Also, there was no indication of what to do with additional lines, if any.

3. The filter would generate the banner, discard the line, and then pass other lines to the output device.

Adding to the confusion, the original print spoolers had a `:sh` (suppress header or banner) flag, which was supposed to suppress banner printing. It did this by having the print spooler not generate the magic banner information line.

A more sophisticated banner printing system would allow the print spooler software to generate the banner, and would then have the `:of` filter act as a pass through. Thus, we need configure the `:of` filter NOT to use the first line as banner printing information, and to pass through all information to the device.

Complicating this whole mess is the `ld` (leader option) and `tr` (trailer option) which is a string sent to the output device (`:of` filter) when the device (filter) is initialized or terminated. This can sometimes be interpreted as the banner line, leading to unexpected results.

Sequence of Operations:

1. If the `sh` (suppress header) flag is true, no banner is printed, and the actions in this section are skipped. No banner information line is generated for the `:of` filter, and no banner printing program is invoked. If there is an `:of` filter and it is expecting such a line and you have `ld` or `tr` information then you may get unexpected results (actually, catastrophic failure is a better term, but I digress).

2. If the `hl` (header last) flag is true the banner is printed at the end of the job and the actions in this section are done at the end of the job.

3. If the user does not want banner pages she can use the `lpr -h` option. This will cause the lpr program to delete the `L` (banner name) line in the control file. If there is no `L` line in the control file and `ab` (always print a banner) is false (the default), then no banner is printed and the other actions in this section are skipped. If `ab` is true and the `L` line is missing then the `N` (user login name) is used; if it is missing as well, then ANONYMOUS is used for the user name.

4. If a banner printing program is specified by `bp`, `bs`, or `be` options, then LPRng will invoke the program to generate a banner and then send the generated banner to the printer via the `:of` filter. The banner printing program will be invoked using the standard filter command line flags (see Filter Command Line Options and Environment Variables for details), with is STDIN attached to /dev/null and STDOUT attached to a file to hold the output banner.

5. If no banner printing program is specified and the `sb` (short banner) option is TRUE (default is true), then the `bl=...` (banner line) option value is expanded and sent to the `of_fd` (`:of` filter or device. The default `bl` value is: `bl=$-'C:$-'n Job: $-'J Date: $-'t`. Using our example, this will get translated to:

           papowell:A Job: file1 file2 Date: Thu Nov 27 23:02:04 PST 1997

6. If no banner printing program is specified and we have `sb@` (no short banner) then we skip banner generation, i.e. - we do not send a banner generation line to the output (`:of` filter).

7. If the queue is a normal forwarding queue, then the `generate_banner` option will invoke the `bp`, `bs` or `be` program as appropriate to create a banner page file which is then made the first (default) or last (`hl` flag or `be=...` present) file in a job. This option has no effect in other types of queues. See the translate_format option as well.

Prev | Home | Next
Opening the Output Device | Up | Printing Job Files