HELIOS EtherShare 2.6 User manual


11 The Print Server
11.1 General remarks
This chapter describes the Print Server and its function, configuration and operation. This is followed by notes on the installation, configuration and operation of printers.
11.2 The Print Server Interfaces
As described in detail in the following, the EtherShare Print Server supports 5 different output interface options, plus the possibility of spooling the resolved print job to disk. It can be considered as a kind of telephone exchange for printer connections, as shown in Table 2:
Table 2: Print Server input and output options
Input options
Job comes from:
Output options
Supported printer types:
AppleTalk
AppleTalk
Serial
UNIX "lpr"
TCP/IP stream
remote "lpr" through TCP/IP
Remote LPR
Shared Memory
Resolve and print to disk

Suitable configuration allows any combination of input and output option to be used.
11.3 The Print Server Programs
The Print Server consists of the programs "papsrv", "psof", "papif", "psif", "tcpif", "shmif", "diskif", "holdif", "balanceif", and "psresolve". They are created in the "$ESDIR" directory during installation. In conjunction with the UNIX system programs "lpr", "lpd" and "mail", their purpose is to process and spool print jobs received via AppleTalk and pass them on to shared printers connected to the UNIX host either through Ethernet, TCP/IP, "Shared Memory" or via a serial interface. The host is normally configured to start "papsrv" automatically when UNIX is booted.
EtherShare's Print Server is based on the BSD printing system. If your host uses the System V printing system
(e.g. Sun Solaris 2.x), the Print Server automatically uses
its own BSD-style "lpr" program, which is provided in the "$ESDIR" directory in such cases.
Table 3: Printer interface programs
driver
description
papif
AppleTalk (Printer Access Protocol) printers interface program
psif
serially-connected printers interface program
tcpif
TCP/IP stream & Remote LPR printers interface program
shmif
Shared Memory interface program
diskif
Print To Disk interface program
holdif
hold queue interface program
balanceif
balance queue interface program
psresolve
pseudo-interface program for use without "lpd"

papsrv
"papsrv" is the program that implements Printer Access Protocol (PAP) functions for the Print Server. PAP is used in AppleTalk networks for communicating with most types of printers and print servers. Once started, "papsrv" continuously monitors the AppleTalk network for printing requests. When a print job is received, it is first stored in the UNIX file system before being passed to the UNIX system program "lpr", which transfers the job to "lpd". The latter calls the appropriate interface program ("papif", "psif", "tcpif", diskif", "holdif", "balanceif", or "shmif") and the optional output filter ("psof"). The interface program then passes the job to the printer (see "Table 3").
A separate "papsrv" process is started for each printer queue on your host.
psof
"psof" is the so-called output filter program, which is responsible for generating the title page (or "banner") as a PostScript job (a banner is not generated for non-PostScript printers). The banner page contains information about the print job such as the user name, the time, and the document name. It is optionally output before the print job, and is useful when sorting out a pile of printed pages if a number of users have been printing at the same time. "psof" is automatically called by the UNIX program "lpd" at the start of each print job, and generates a banner if one was specified with the "banner" switch when configuring the printer (the "banner" switch sets the "sh" flag in "/etc/printcap"). The banner page is generated from a PostScript file which is compiled into the interface programs "*if" (e.g. "papif"), or from "BANNER" in the printer's spool directory. The latter takes precedence, if it exists. The following special sequences ("variables") in the banner file are replaced automatically by information about the print job (see User and document names in print jobs in appendix "A 7.1 EtherShare log files" for related information):
^U The user who created the print job (set by "%%For")
^T The current time
^N The file name of the document
^C The number of pages in the print job
^P The logical ("printcap") name of the printer
^H Host name
^n UNIX job title
^u UNIX user ID (login name)
Please note that the code "^U" in the above list does not mean Control+U, it means uparrow ("^") followed by an uppercase "U". With the Banner Page switch in the EtherShare Admin (which sets the "sh" suppress headers flag in "/etc/printcap") you can determine whether the printer will print a title (banner) page before outputting the print job or not.
papif
"papif" is the interface program for printers that support Apple's Printer Access Protocol (PAP) and are connected to the print server through AppleTalk. "papif" is used for all PostScript PAP printers (including photo-typesetters), and the Apple ImageWriter II and ImageWriter LQ.
Print jobs received by the Print Server from a workstation on the network are processed and queued before being sent to the PAP printer through the network again.
Due to print job spooling, it is more efficient to drive AppleTalk printers through the Print Server, rather than accessing them directly from the workstations. Accordingly, users should select the printer queue in the Chooser, and not the printer it is connected to. We recommend that you select a Chooser name for the queue which shows which printer it drives and also indicates that it is a queue and not a printer. For example, add "spooler" to the printer's name.
"papif" forms the link between "lpr" and PAP printers.
psif
"psif" is the interface program for PostScript printers which are connected directly to the UNIX host via a serial (RS232C) interface. Due to slow data transfer rates we normally do not recommend serially-connected printers for use with Desktop Publishing applications.
"psif" forms the link between "lpr" and serially-connected printers.
tcpif
"tcpif" is the interface program for PostScript printers that support the TCP/IP stream protocol. It is also used for printers which are connected with the Remote LPR protocol. TCP/IP stream printers must be compatible with the EtherShare TCP/IP stream implementation - contact your printer manufacturer or HELIOS supplier if you are not sure
about this. TCP/IP stream has significant advantages over "Remote LPR" - see later.
Print jobs received by the Print Server from a workstation on the network are processed and queued before being sent to the printer through TCP/IP.
"tcpif" forms the link between "lpr" and TCP/IP printers.
diskif
"diskif" is the interface program for printing files to disk. This can be useful e.g. if you want to automatically generate PDF files. In this case you can print to files in a specific UNIX directory and induce the Acrobat Distiller software to scan this directory regularly and convert incoming files to PDF.
"diskif" forms the link between "lpr" and the disk where print jobs are directed to.
holdif
"holdif" is the interface program if you want to "store" print jobs which have been processed on a hold queue. "holdif" can be configured e.g. to forward faulty print jobs to a specific hold queue ("error" queue), and resolved print jobs to another ("hold" queue). In the Settings window of the EtherShare Admin (see Hold Queue connection in "5.10 Printers list"), Hold Time, i.e. the time a print job is stored on the "hold" queue or "error" queue respectively, can be specified.
"holdif" forms the link between "lpr" and hold/error queues.
balanceif
"balanceif" is the interface program for printer queues which are mutually connected in order to balance print job loads. For more information about "balanceif" settings refer to " Balance Group connection" in "5.10 Printers list".
"balanceif" forms the link between "lpr" and the balanced printer queues.
shmif
"shmif" is the interface program for PostScript interpreters (software RIPs) running on the same host which are able to communicate through a "Shared Memory" interface. The RIP must be compatible with the EtherShare "Shared Memory" interface specification - contact your RIP manufacturer or HELIOS supplier if you are not sure about this.
Print jobs received by the Print Server from a workstation on the network are processed and queued before being sent to the RIP through a common "Shared Memory" segment.
"shmif" forms the link between "lpr" and software RIPs.
Configuration
If more than one printer is to receive print jobs from the Print Server, each of them requires a new interface program task to be started. Each task requires a separate entry line in the main configuration file "atalk.conf" to specify, among other things, the printer queue's unique AppleTalk (NVE) name, type and zone.
"atalk.conf" is not allowed to have more than one entry with the same name (i.e. the printer queue name must be different from printer name) - the Print Server, otherwise, could not access a unique configuration for a particular physical printer. Accordingly, it is necessary to start the interface program with a new name for each additional printer.
By convention, a copy of the appropriate interface program ("papif", "tcpif" or "shmif") is renamed to the name of the logical (UNIX) printer, even if only one printer is being driven by the interface. "atalk.conf" then contains a separate entry for each printer (e.g. "Laser1 " and "Laser2"), but no longer contains an entry for the interface program itself.
The new names for the interface programs are assigned with the UNIX "ln" program during printer configuration, in order to avoid having to make several physical copies of the program on the hard disk.
11.4 The Print Server in operation
Each print job consists of the print data itself and one or more so-called "prep" files (PostScript print procedures and dictionaries, also called control files or "inits"), which precede the print data. It may also be necessary to send download fonts and a banner page to the printer.
The originator of the print job (the application's printer driver in the workstation) communicates automatically with the Print Server via the PAP protocol to agree which "prep" files must be sent to the printer before printing can start. After being sent by the workstation for the first time, "prep" files are copied automatically by the Print Server to the so-called "prep directory" ("$ESDIR/dicts") this is called "dictionary caching".
If they are needed again, the "prep" files can be sent from the UNIX host directly, rather than from the workstation. This reduces network loading and increases throughput. See chapter "11.7 Adobe Document Structuring Conventions" for related information.
Font including
Fonts required by a particular print job which are not normally supported by the printer (download PostScript fonts) must also be included in each job before sending it to the printer. In order to let the Print Server know which fonts to send, those fonts which are permanently available in each printer (resident fonts) are specified in the "FONTS" file in the printer's spool directory (usually "/usr/spool/
<printername>/FONTS").
Furthermore, the EtherShare Admin can install Adobe "Type 1" and "Type 3" printer fonts (not screen fonts or TrueType fonts) into a central font directory on the host ("$ESDIR/psfonts"), directly from the font manufacturer's original font disk. The Print Server only sends those fonts to the printer which are not already resident. Missing fonts are sent preferentially from the central font directory, and are not requested from the originating workstation. This reduces network loading, increases throughput and allows central administration of printer fonts.
The printer's resident font list is created automatically when you install a new printer with the EtherShare Admin program by interrogating the printer. The list must be updated (with Update Fonts in EtherShare Admin) if new fonts have been installed on the printer, through font cartridges, printer cache disks, etc.
If your printer is not fully LaserWriter compatible, and font interrogation does not work, standard font lists for the Apple LaserWriter and the Apple LaserWriter Plus are supplied automatically. For "Remote LPR" printers, the copying is done automatically if you set them up with the EtherShare Admin. The "FONTS" file may subsequently need manual editing if your printer's font selection is different from those of the Apple printers.
As soon as "papsrv" has received and spooled the entire print job, the job is passed to the UNIX system program "lpr". "lpr" then queues it and passes control to "lpd". "lpd" is responsible for passing the job to the output filter "psof" and to the specified interface program, such as "papif", which makes the connection to the printer itself: "lpd" determines how the printer is connected to the server by examining the entry for the printer in the system file "/etc/printcap". "/etc/printcap" also specifies (with the "sh" suppress headers flag) whether a title page ("banner") is required. If necessary, the banner is generated in PostScript by "psof", and printed before the print job.
The specified interface program includes the needed fonts, resolves any references to external images if you have the "OPI" option installed, resolves "%%Include..." references (see "11.7 Adobe Document Structuring Conventions"), transfers the job to the printer, and waits for messages that may be returned. It is also responsible for interrogating the printer's page count before and after the job.
If an error message is returned, it is sent to the user by the UNIX system program "mail". Users who have Helios Mail installed on their Macintosh will receive the message directly on their workstation. The user will also be notified by the "afpmsg" program, which displays an error message on the Macintosh. See mail and clientmessages in chapter "11.6 Configuring printers manually" and User and document names in print jobs in appendix "A 7.1 EtherShare log files" for related information.
Several types of error message, e.g. "out of paper" or "paper jam" are also sent to the program "syslogd", which can be configured by the administrator (in "/etc/syslog.conf") to specify the route that the message then takes (e.g. output to console). This allows rapid response to those error conditions that demand immediate attention.
If the Print Server determines that the printer has refused the print job completely (e.g. due to a syntax error in the PostScript code), the rest of the job is immediately aborted with an appropriate error message and, depending on settings in the EtherShare Admin, e.g. forwarded to an error queue.
Since the print job is temporarily stored in the UNIX file system, it can be rapidly transmitted from the workstation to the host without the workstation having to wait for the printer (spooling function). Further processing of the print job is carried out automatically by the Print Server, while the user can continue with other jobs.
As described above, the Print Server stores all "prep" files in the "prep directory" and only transfers them to the printer when they are required. The "prep" files are not made resident in the printer. This allows switching between different "prep" files which are incompatible with each other, without having to manually reset the printer. The print server appends the "prep" files in non-resident form to the beginning of the print job, and sends the complete file to the printer as a single job.
However, the standard "prep" files provided for the Apple LaserWriter 6.0 printer drivers are designed to be transferred to the printer as resident "preps" in advance of the print job itself. Due to problems in the standard Apple "prep" files, errors may occur when the Print Server appends them to the job, and the job may not print properly.
For this reason, modified versions of the standard "prep" files for the drivers "LaserWriter Version 5.2" and "LaserWriter Version 6.0" are included in EtherShare in "$ESDIR/dicts". Their names are "_AppleDict_md_68_0" and "_AppleDict_md_70_0", respectively. The Print Server uses these modified files automatically, instead of the versions provided by Apple. This problem is no longer present with Mac OS Version 7.0 and above, since Apple no longer make their "prep" files resident. "$ESDIR/dicts" also contains a Linotype dictionary and a HELIOS dictionary.
Restarting the Print Server
If the server shuts down while there are print jobs running, you will need to restart the affected printers using the UNIX command "lpc restart all". This can also be done with the Restart Printer option of the EtherShare Admin application.
restart-pap
The shell script "$ESDIR/restart-pap" is used internally by EtherShare to restart all printer queues. This is necessary to enable printer configuration changes in the "atalk.conf" file to come into effect immediately, without restarting the entire EtherShare system.
11.5 Parameters of the "papsrv" program
When it starts, the Print Server "papsrv" first accesses the main configuration file "atalk.conf" to determine its configuration and the number of printers that are available. Printers can be set up if necessary by using an editor such as vi, but we strongly recommend that you do this with the EtherShare Admin instead. See also chapter "5.14 Editing "atalk.conf" (and other configuration files) manually".
The parameters described below can be defined for each "papsrv" process in "atalk.conf" (note that the parameter list is preceded by the program name "papsrv:"):
name
name=netname
netname
is the AppleTalk (NVE) name of the Print Server. This is the name with which it is known to the network. It is the name you see in the workstation's Chooser under "LaserWriter".
type
type=nettype
nettype
is the AppleTalk type of the Print Server with which it is known to the network. nettype should normally be set to "LaserWriter", "ImageWriter" etc., since only then it will be recognized by the standard Macintosh Chooser extensions on the workstations. If the workstations are provided with a later version of the LaserWriter program, which also allows other printer types, a different type can be specified here if necessary.
The default for nettype is "LaserWriter".
zone
zone=zonename
zonename
is the name of the AppleTalk zone to which the Print Server should be allocated. Thus it determines the zone in which the Print Server can be seen in the Chooser. The chosen zone must be one of the local zones that the server is connected to. We strongly recommend to test this using the UNIX program "zones -l" ("$ESDIR/zones")
By default "papsrv" registers itself in the first zone of the first interface entry in "atalk.conf".
printer
printer=printername
printername
is the logical (UNIX) name of the printer to which the Print Server should send the print jobs. By convention, this is also the name to which a copy of "papif" or "tcpif" has been renamed if the printer is connected via AppleTalk or TCP/IP. The same printer name must also be specified in the UNIX file "/etc/printcap", which is accessed by the "lpr" program. The printer name is passed from the "papsrv" program to "lpr" without checking. Accordingly, it is up to the administrator to make sure that a correct entry is also included in "/etc/printcap". This is done automatically when you set up a new printer with the EtherShare Admin.
dictdir
dictdir=path
path
is the path containing PostScript dictionaries and printer "prep" files, such as "AppleDict...", "HeliosDict..."and "LinoDict...". You can specify an alternative path here if one of your printers is not fully compatible to the Apple LaserWriter and needs other dictionaries and/or "prep" files. Normally, all PostScript printers share the same files.
The default for dictdir is "$ESDIR/dicts". If you change the default, you must copy "HeliosDict..." (and optionally the other dictionaries, too) to the new directory.
lpr
lpr=path
path
specifies the path (including the file name) of an alternative "lpr" program to the one normally used by "papsrv". If your server uses the BSD printing system, "papsrv" uses the standard "lpr" program provided by the server (e.g. "/bin/lpr"). If your host uses the System V printing system (e.g. Sun Solaris 2.x), "papsrv" automatically uses its own BSD-style "lpr" program, which is provided in the "$ESDIR" directory in such cases.
The lpr parameter can be used to specify another "lpr" program which is different from the one normally selected by "papsrv". You should use this parameter if you have developed your own custom "lpr" program. You can also use this option to specify a shell script.
The default for path depends on the server type, and is usually "/bin/lpr" or "/usr/local/es/lpr".
This parameter cannot be specified with the EtherShare Admin - you need to edit "atalk.conf" manually.
noresolve
[no]resolve
This following paragraph (resolve parameter) is maintained for historic reasons since with EtherShare 2.6, the printer interface program "diskif" is the easier way to handle "Print To Disk" files.
The resolve switch causes "papsrv" to "resolve" all print jobs for the specified printer queue before they are sent to "lpr", i.e. "papsrv" incorporates all required font, dictionary and OPI image information into the jobs in advance, and resolves "%%Include..." references. This is needed whenever you want to use printers that cannot be driven directly by the printer interface programs supplied with EtherShare. This includes the printer interface program "diskif" and proprietary printer connections. But be aware that if you use the resolve switch you will need substantially more spooling space on the local server.
Normally, print job resolving is done on-the-fly, by the specified interface program, such as "papif", and jobs queued in the printer's spool directory are not yet resolved. This design approach saves spooling storage, particularly if you are using EtherShare OPI.
The resolve switch causes the "papsrv" to call the pseudo-interface program "$ESDIR/psresolve", which compares the fonts needed by the document with the printer's resident font list which resides in the "FONTS" file in the printer's spool directory, and with the list of available server fonts in "$ESDIR/psfonts/FontDirectory". Thus, it is more intelligent than choosing Postscript Job from the application's Print dialog - the latter always includes all document fonts, regardless of whether you need them or not. See Font including in chapter "11.4 The Print Server in operation" for related information.
You should use the resolve switch to prepare print job files for printing offline or with a printer or typesetter whose hardware interface is not supported by EtherShare, but you must not use resolve in conjunction with the standard EtherShare interface programs, because all references will be included twice and the job will fail.
The resolve switch must be specified in each "papsrv" entry for which job resolving is desired.
Be aware that if the job then gets printed on a different host and/or printer, it will not contain all required fonts if it has been resolved with an inappropriate "FONTS" file.
The default for this switch is noresolve, i.e. interrogate the printer for required fonts and dictionaries on a job-by-job basis, and include OPI images on-the-fly.
This parameter cannot be specified with the EtherShare Admin - you need to edit "atalk.conf" manually.
filter
filter=path
path
specifies the path (including file name) of a custom filter program which is called in a pipe with the "standard input" connected to the print job and the "standard output" connected to "lpr". The job will already be resolved if the resolve switch is specified.
Argv[0] is the printer name in this case. There is no default for path.
filter may be used in conjunction with the standard EtherShare interface programs.
This parameter cannot be specified with the EtherShare Admin - you need to manually edit the "atalk.conf" file.
filtercmd
filtercmd=path
path
specifies the path (including file name) of a custom filter program which is called as follows:
path -Pprintername spoolfile
The "filtercmd" program can then process the file (which is not resolved) as required. The output file should appear under the same name ("spoolfile") given in the argument - "papsrv" will wait until the custom filter program has finished before processing the job further. Compared to the filter parameter, filtercmd can be used for example to add a header (e.g. a PostScript init) or a trailer to the file without having to process the whole file. Use filter instead if you need to parse the entire file, e.g. for font names or job information.
There is no default for path.
filtercmd may be used in conjunction with the standard EtherShare interface programs.
This parameter cannot be specified with the EtherShare Admin - you need to manually edit the "atalk.conf" file.
publish
The [no]publish switch can be used to have a queue appear or not in the chooser. If the switch is set to nopublish the respective printer queue will not be appearing in the chooser. However, it can still be seen and configured in the EtherShare Admin. To set this flag to nopublish, tick the checkbox Hide Queue in the Printers list of the EtherShare Admin.
The default for this flag, i.e. the checkbox in the EtherShare Admin remains unticked, is publish.
groups
groups=name
name
specifies, separated by commas, the names of the groups which are allowed to access the "papsrv".
noauthenticate
The [no]authenticate switch determines whether printing to a LaserWriter queue is password-protected or not. In case the parameter is set to authenticate, user name and password have to be entered before printing. This setting affects all LaserWriter printer queues on the same server.
The default for this switch is noauthenticate.
foreground/
background
The Mac OS 9 LaserWriter (version 8.7) printer driver's behavior is background printing by default. This means that spooling of print jobs is performed two times, locally on the Macintosh and on the selected printer queue.
The "papsrv" however induces Apple's LaserWriter printer driver to spool the jobs directly on the selected queue by default, unless the background option is specified in the configuration file "atalk.conf".
The default setting for this option (i.e. no flag is set) is foreground.
11.6 Configuring printers manually

Important: Generally, it is more convenient and safer to set up printers with the EtherShare Admin program.

If more than one printer queue is being serviced by the Print Server, a separate "papsrv" process must be configured for each of them. When first started, "papsrv" automatically determines the number of printer queues from the number of entries in "atalk.conf", and starts a separate child task for each one by forking.
The program "papsrv", which implements AppleTalk printing functions for the network, has no way of knowing how each printer is physically connected. All communication with the printer is done through the UNIX system program "lpd", which extracts information about the printer from the UNIX system file "/etc/printcap", using the logical (UNIX) printer name received from "papsrv" as the key. "lpd" then routes the job through the output filter program "psof" (to generate the optional banner page) and sends it to the appropriate interface program ("papif", "psif", "tcpif", "balanceif", "diskif", "holdif", or "shmif").
Each printer queue requires an entry in "/etc/printcap" to describe in detail the way in which the associated physical printer is connected.
The entry in the "/etc/printcap" file specifies which interface program and output filter program are required. The output filter is used to print the banner page, and the interface program implements the connection to the physical printer. The output filter for all PostScript printers is the "psof" program.
11.6.1 Global parameters
When it starts, each printer interface program first accesses the main configuration file "atalk.conf" to determine its configuration.
The parameters described below can be defined in "atalk.conf" for any of the interface programs. They can be specified individually for each printer, together with the other parameters described later, in an "atalk.conf" section which is preceded by the logical printer name such as "Laser1:". Alternatively, they can be specified in a special global "atalk.conf" section "if:", in which case they apply to all interface programs (but the former method has precedence if they are specified in both locations). Currently, none of the parameters below can be specified with the EtherShare Admin - you need to do this manually using an editor such as vi. See also chapter "5.14 Editing "atalk.conf" (and other configuration files) manually".
watchtime
watchtime=time
time
specifies the time interval in seconds with which the printer interface program interrogates the printer's status channel. As a diagnostic aid, you can use the UNIX "lpq" program to check the status of each spooled printer. "lpq" returns the status messages that you normally see in the dialog box of the LaserWriter driver for locally connected AppleTalk printers.
The Print Server does not return such status messages to the workstations - it only returns them to the "Print jobs" window in the EtherShare Admin. The watchtime parameter has been provided because the PostScript processors of some printers time out in certain unusual situations if you check the printer's status channel for extended periods of time.
The default for time is 10 seconds.
Specify 0 (zero) if you do not want the printer interface program to check the printer's status channel. This does not affect the processing of printer error messages. However, in this case, "lpq" only returns "Printing job" or "No entries", depending on whether there are any jobs in the printer's queue.
If you need to be able to check the printer status with "lpq", a meaningful value of time is about 10 -60 seconds.
mail
[no]mail
The mail switch determines whether printer errors are reported back to the originator of the print job through Helios Mail. Even if you specify nomail, printer errors are still recorded in the printer log file, and many types of errors are also written to the system messages file, allowing you to view them later with the EtherShare Admin or an editor program such as vi. See User and document names in print jobs in appendix "A 7.1 EtherShare log files" for related information.
The default for this switch is mail.
chargebanner
[no]chargebanner
This switch causes the printer's page count to include the number of banner pages - if, in the EtherShare Admin's Settings menu, Banner Page is ticked - to the total amount of pages.
The default for this switch is chargebanner.
bannerfirst
The bannerfirst parameter causes the printer to output a banner page before the print job.
bannerlast
bannerlast determines that the banner page is ouput after the print job has been terminated on the printer.
The default setting is bannerfirst.
clientmessages
[no]clientmessages
The clientmessages switch determines whether printer status messages are reported to the AFP-client (or PCShare client, respectively). These messages pop up as display messages and report e.g. paper jams, misfed paper, and other printer-related errors.
The default for this switch is clientmessages.
nospoolspool
[no]spoolspool
This switch determines whether a spooled print job is "marked" with the information that it has already been spooled. If it is set to spoolspool, a spooled print job is not recognized as already spooled, thus setting this switch to spoolspool is only sensible at the first spooler in line of a chained EtherShare queue.
The default for this switch is nospoolspool.
ignoreresolveopts
The parameter ignoreresolveopts, when set, makes a second EtherShare spooler ignore all remarks on resolved references from a prior spooling process. If you merely want a spooler to ignore single references, e.g. references regarding included fonts etc., you may set one or more of the following flags:
ignoreprocset-resolveopt
With the ignoreprocsetresolveopt flag set, the next (second) EtherShare spooler ignores information about included procsets only.
ignorefontresolveopt
With the ignorefontresolveopt flag set, the next (second) EtherShare spooler ignores information about included fonts only.
ignoreinclude-resolveopt
With the ignoreincluderesolveopt flag set, the next (second) EtherShare spooler ignores information about included EPSF files only.
ignoreopiresolveopt
With the ignoreopiresolveopt flag set, the next (second) EtherShare spooler ignores information about resolved OPI-references only.
nice
nice=niceincrement
The priority of a printer interface program - compared to other executable programs on the Print Server - can be altered. The UNIX parameter nice lets you increase/reduce the priority, and therefore the speed of a program. The higher the priority of a program, the less "nice" its behavior towards other applications. The values for niceincrement are as follows:
niceincrement > 0 slower / "nice" towards other appli-
cations
niceincrement < 0 faster / less "nice" towards other
applications
The default value for niceincrement is 0.
About the current range of nice see the respective pages of your UNIX manual.
extendedinfo
[no]extendedinfo
The Printer Log file ("$ESDIR/printer.acct.x") contains information about printing time/date, document name, user, fonts, and more. With extendedinfo set, the range of information for each print job is increased by e.g. an OPI image replacement list and the total number of bytes printed.
The default for this switch is extendedinfo.
facility
facility=logfacilityname
facility
is a string that ought to be set by the system administrator only since its use requires advanced knowledge on UNIX programming. For further reference see the UNIX manual pages "syslogd(1)".
rsslimit
rsslimit=maxbytes
rsslimit
(resident set size limit) is determined by maxbytes which is the maximum number of kB a printer interface program can utilize as memory. If this parameter is not set, the memory administration is up to your system settings.
nomagic
[no]magic
PostScript printers normally cannot accept print jobs consisting of "flat" ASCII data. They require the print job to be in PostScript format. ASCII print data can be manually converted to PostScript with the "pstext" utility. In addition to this, the interface programs of the Print Server are also able to automatically detect whether a particular job is in PostScript or ASCII format, by scanning the start of the job for the "signature" string "%!PS-Adobe". If this string is missing, the job is assumed to be non-PostScript, and is converted to PostScript automatically before printing.
Some application programs, particularly those running under MS-Windows, do not generate the PostScript signature string reliably, causing job type auto-detection to fail, whereupon a PostScript program is printed rather than your document. In such cases, you can specify the nomagic switch to disable job type auto-detection.
The default for this switch is nomagic. The magic switch should only be used for PostScript printers - do not specify it in the global section "if:" if the Print Server is serving non-PostScript printers too - instead, specify it for each interface separately.
fontdir
fontdir=string
string
is the path of the host directory which contains the server font list "FontDirectory". The fonts themselves are contained in subdirectories of fontdir, arranged alphabetically.
The default for string is "$ESDIR/psfonts".
volumes
volumes=string
string
is the path (including name) of the file containing the EtherShare volume list.
The default for string is "$ESDIR/conf/afpvolumes".
dictdir
dictdir=path
path
is the path containing PostScript dictionaries and printer "prep" files, such as "AppleDict...", "HeliosDict..."and "LinoDict...". You can specify an alternative path here if one of your printers is not fully compatible to the Apple LaserWriter and needs other dictionaries and/or "prep" files. Normally, all PostScript printers share the same files.
The default for path is "$ESDIR/dicts". If you change the default, you must copy "HeliosDict..." (and optionally the other dictionaries, too) to the new directory.
11.6.2 AppleTalk (PAP) connections
PAP-compatible printers which are connected via AppleTalk are identified on the network by their so-called Network Visible Entity (NVE), consisting of the NVE name, type and AppleTalk zone. These parameters must be known to the interface program in order to be able to uniquely identify a physical printer.
Printers that support PAP include Apple's LaserWriter, LaserWriter Plus, ImageWriter II, and ImageWriter LQ.
The interface program for AppleTalk PostScript printers is the "papif" program (see "11.3 The Print Server Programs"). "papif" is called by the UNIX system program "lpd", and extracts additional configuration information from the "/etc/printcap" file by using the logical (UNIX) printer name received from "lpr" as the key.
When it is started, each "papif" process first accesses the main configuration file "atalk.conf" to determine its configuration. Printers can be set up, if necessary, by using an editor such as vi, but we strongly recommend that you do this with the EtherShare Admin instead. See also chapter "5.14 Editing "atalk.conf" (and other configuration files) manually".
The parameters described below can be defined for "papif" in "atalk.conf". The parameter list is preceded by the logical printer name such as "Laser1:", which is assigned to "papif" by linking.
entity
entity=nvename
nvename
is the NVE name/type/zone of the printer with which it is known to the AppleTalk network (NVE = Network Visible Entity). This name is not the same as the AppleTalk name of the printer queue. Note that if print jobs are sent from workstations directly to the printer, they bypass the printer queue, and thus do not gain the advantages of spooling, "prep" file management, etc.
The NVE address has the following structure:
entity="name:type@zone"
name is the NVE name of the printer and type is the NVE type. zone is the AppleTalk zone in which the printer resides. If both the UNIX host and the AppleTalk printer are in the same zone, the zone field can be specified as "*".
localwinsize
localwinsize=maxlpackets
maxlpackets specifies the maximum number of data packets that are passed from "papif" to the printer through the network during a transaction. The number of packets may need to be limited if the buffer size in the printer is too small. maxlpackets can be varied to optimize the data transfer rate.
The default (and maximum) for maxlpackets is 8.
remotewinsize
remotewinsize=maxrpackets
maxrpackets specifies the maximum number of data packets that are passed from the printer to "papif" through the network during a transaction. The number of packets may need to be limited if the buffer size in the UNIX host is too small. maxrpackets can be varied to optimize the data transfer rate.
The default (and maximum) for maxrpackets is 8.
As described above, a fully configured PAP printer requires an entry in both "atalk.conf" and "/etc/printcap".
The following is a typical "atalk.conf" entry for a PAP printer:
papsrv: name="SilentSpooler", printer="Laser1"
Laser1:entity="Silentwriter:LaserWriter@LocalTalk"

The following is a typical "/etc/printcap" entry for a PAP printer:
Laser1:\
:lp=/usr/local/es/lprdevdir/Laser1:\
:if=/usr/local/es/if/Laser1:\
:of=/usr/local/es/psof:\
:sh:mx#0:du#0:sf:\
:sd=/usr/spool/Laser1:\
:af=/usr/local/es/printer.acct:\
:lf=/usr/spool/Laser1/Laser1-log:

This entry contains a few special features which are not normally found in UNIX "printcap" entries. For example, a network printer does not need a device file in the "/dev" directory, although the "lpr" spool system still tries to obtain exclusive rights to such a file. Accordingly, it is necessary to create an empty, dummy file for each printer. The necessary file can be created for each printer with a command similar to the following:
touch /usr/local/es/lprdevdir/Laser1
where Laser1 is the logical printer name.
This command is issued automatically if you set up printers with the EtherShare Admin. The use of a separate file for each printer allows multiple printers to work in parallel. Otherwise, it is only possible for "lpr" to service one printer at a time.
The other feature is the interface program ("if="), which specifies the logical printer name "Laser1" instead of "papif". "Laser1" is a "link" to "papif" through a subdirectory of the "$ESDIR" directory.
The necessary symbolic link for each printer can be created with commands similar to the following :
cd /usr/local/es
ln -s if_name /usr/local/es/if/xPrinter

where if_name is the interface program, and xPrinter is the logical (UNIX) printer name,
for example:
ln -s /usr/local/es/papif /usr/local/es/if/Laser1
or
ln -s /usr/custom/if_name /usr/local/es/if/Laser1
The "if=" line in "/etc/printcap" entry then specifies the symbolic interface "/usr/local/es/if/Laser1" rather than the real interface.
In this way, the "/etc/printcap" entry points to the printer's interface program, but also allows the interface program to find the path to the EtherShare directory at the same time, to obtain auxiliary programs it needs while printing. Furthermore, in a situation with multiple printer queues, this allows each interface program to uniquely access its own configuration entry in "atalk.conf".
The following shows an example of the symbolic links used by three printers, two connected via the EtherShare "papif" (AppleTalk) interface program and one through TCP/IP:
ibm$ ls -l *if
-rwxr-xr-x 1 root staff Jun 17 1991 20:01 papif
-rwxr-xr-x 1 root staff Jul 03 1991 20:01 psif
-rwxr-xr-x 1 root staff Nov 13 1991 20:01 tcpif


if:
total 0
lrwxrwxrwx 1 root system 8 Jun 17 1991 xw3 ->../tcpif
lrwxrwxrwx 1 root system 8 Jul 03 1991 lw ->../papif
lrwxrwxrwx 1 root system 8 Nov 13 1991 lwform ->../papif
ibm$


The necessary links are made automatically if you set up printers with the EtherShare Admin.
Lastly, when creating printers with the EtherShare Admin, the user of the printer dameon is set in "/etc/printcap" by default to ID 0 ("root") with the flag "du#0". This avoids errors relating to permissions when printing, especially if the print job contains external references to OPI images or "%%Include...." comments. This feature is associated with a slight security risk. See the daemonuid parameter in chapter "13.3 Parameters of the "admsrv" program" for related information.
If the printer needs several alternative logical names,
they can be specified manually on the first line of the "/etc/printcap" entry separated by the "|" character, for example:
Laser1|lw|ps|PostScript:\
Note that all logical (UNIX) printer names must be unique on each host; the names must not include spaces.
11.6.3 Serial PostScript connections
Serially connected PostScript printers do not have a network identification. They are uniquely addressed by the host's physical "RS232" (serial or V24) port specified in the "/etc/printcap" file.
The interface program for serially connected PostScript printers is the "psif" program (see "11.3 The Print Server Programs"). "psif" is called by the UNIX system program "lpd", and extracts additional configuration information from the "/etc/printcap" file by using the logical (UNIX) printer name received from "lpr" as the key. "psif" then initializes the hardware parameters for the serial interface accordingly. The Print Server requires 8-bit, no parity and hardware handshake - please see 8-bit transparency below for more details.
8-bit
transparency
Many Macintosh applications need an 8-bit transparent communications channel to the printer, particularly if you print PostScript files which include binary bitmap data. If you connect a printer via "RS-232", as well as making sure that "/etc/printcap" specifies 8-bit communication and hardware handshake (this is taken care of by the EtherShare Admin automatically), you must also set up the printer accordingly, and use a printer cable which is suitable for hardware handshake. Even with the correct setup and cabling please note the possible problems described under nobinmode below.
Some printers have front panel or DIP switches for adjusting communications parameters, and with others you can do this with Apple's "LaserWriter Utilities" program (often supplied with LaserWriter printers). Please select the printer directly when you use this program, not a printer queue.
Since serially connected PostScript printers are uniquely addressed by the host's physical RS232 port (e.g. "/dev/ttyb"), which is specified in the "/etc/printcap" file, the printer's address does not need specifying in "atalk.conf", and thus "psif" does not always need an entry in this file.
The single parameter described below can be defined manually for "psif" in "atalk.conf". The parameter list is preceded by the logical printer name such as "Laser2", which is assigned to "psif" by linking.
nobinmode
[no]binmode
Even if your communications channel is set to 8-bit, no parity and hardware handshake, bitmap images may still contain binary information which inadvertently correspond to special control codes for the serial port of the printer's PostScript interpreter. In particular, Ctrl-C is reserved for "abort current job", Ctrl-D is reserved for "end of file", and Ctrl-T is reserved for "return status". This problem only affects serial printer connections - AppleTalk, "TCP/IP stream" and "Shared Memory" connections are always binary transparent, and have a separate communications channel for status messages.
PostScript interpreters of printers manufactured from about 1992 on - especially those that support Level 2 PostScript - often support a special 8-bit binary transparent mode called "binmode", which avoids conflicts with control codes by "quoting" them instead with two 7-bit characters.
The binmode parameter causes "psif" to query the specified printer at the start of each job for binary mode capability, and to automatically set binary mode if possible. Binary mode queries cause a small amount of processing overhead, so you should only specify this parameter if your printer supports this option.
The default for this switch is nobinmode.
The following is a typical "/etc/printcap" entry for a serially connected PostScript printer:
Laser2:\
:lp=/dev/ttyb:\
:br#9600:rw:fc#0000374:\
:fs#0000003:xc#0:xs#0040040
:of=/usr/local/es/psof:\
:if=/usr/local/es/psif:\
:sh:mx#0:du#0:sf:\
:sd=/usr/spool/Laser2:\
:af=/usr/adm/printer.acct:\
:lf=/usr/spool/Laser2/Laser2-log:

This example configures a PostScript printer for direct connection to the serial interface of a Sun workstation.
The first line in the above example specifies the printer's logical name "Laser2". This is the name that must be included in the parameter list for "papsrv" ("printer=Laser2") in order to be able to assign the physical printer to the appropriate printer queue.
The two-character flags in subsequent entries of the example characterize specific features of the printer. The following list summarizes the parameters used. Please refer to your UNIX system documentation for full details or read, on the HELIOS CD-ROM, the online documentation (manuals/lprman.pdf).
lp printer device
br baud rate
rw read/write
fc flag clear
fs flag set
xc local mode clear
xs local mode set
if interface program
of output filter
sh suppress headers
du daemon user
mx maximum file size
sf suppress form feeds
sd spool directory
af accounting file name
lf log file name

If the printer needs several alternative logical names, they can be specified manually on the first line of the "/etc/printcap" entry separated by the "|" character, for example:
Laser2|lw|ps|PostScript:\

Note: All logical (UNIX) printer names must be unique on each host; the names must not include spaces.

11.6.4 TCP/IP PostScript connections
PostScript printers which are connected via TCP/IP are identified in the TCP/IP network by their Internet number and service port. These parameters must be known to the interface program in order to be able to uniquely identify a particular printer.
The interface program for TCP/IP PostScript printers is the "tcpif" program (see "11.3 The Print Server Programs"). "tcpif" is called by the UNIX system program "lpd", and extracts additional configuration information from the "/etc/printcap" file by using the logical (UNIX) printer name received from "lpr" as the key.
"tcpif" supports both the "TCP/IP stream" protocol and the "Remote LPR" protocol. "TCP/IP stream" is the default; "Remote LPR" is configured if the "service" parameter in "atalk.conf" is set to "printer" or "515". You must specify the parameter rprinter="printer_queue_name", too.

Note: Keep in mind that if you edit "rm/rp" configurations in printcap manually, EtherShare will not recognize them anymore.

"TCP/IP stream" printers must be compatible with the EtherShare TCP/IP stream implementation - contact your printer manufacturer or HELIOS supplier (see the HELIOS Web site: www.helios.de) if you are not sure about this.
"TCP/IP stream" allows bidirectional communication with the printer, whereas "Remote LPR" only allows unidirectional communication. Furthermore, the HELIOS implementation provides a separate but optional communications channel for status messages with the address <port+1>
(see below). This address cannot be configured.
You can test for bidirectionality by making a "telnet" connection to your TCP/IP printer from the UNIX command line as follows:
telnet <host> <port>
e.g.
"telnet 192.9.200.1 4000" or "telnet osiris bspp"

host is the Internet number (or host name) of the printer; host names are usually listed in the "/etc/hosts" file. port is the service port number (or service name) which specifies the process within host. If your printer has a network interface which supports TCP/IP, these parameters should be specified in your printer documentation.
You should be able to communicate with the printer's PostScript interpreter and get PostScript responses (bidirectional communication), although this test alone is no proof that the connection is fully compliant with the EtherShare TCP/IP stream implementation.
Contacting the print server with "telnet" checks that at least basic communication is running properly. It does not verify that the communications channel is binary transparent and thus suitable for printing bitmap (graphics) data.
If the "telnet" session is able to communicate in a bidirectional way with the printer, try to set up the printer using the EtherShare Admin with the same host and port parameters you specified in the "telnet" test.
If it is not able to do this, then the TCP/IP connection is unsuitable for the "tcpif" filter in EtherShare. In this case you need to configure "Remote LPR", or use a third-party TCP/IP driver and specify the EtherShare "resolve" option, as described elsewhere.
EtherShare uses a second service port with the address <port+1> to receive status information from the printer. You are still able to print if this address is not implemented on your printer, but you will not be able to receive status information on your print jobs, such as the "busy" message, or to cancel and flush jobs which are already being processed by the printer.
"Remote LPR" printers require substantially more spooling space on the local host than "TCP/IP stream" printers since they demand the total size of a print job first before they start transferring it. So the complete print job has to be spooled to a local disk first. Furthermore, they do not return status messages or answer font queries. Accordingly, a "TCP/IP stream" or AppleTalk connection is preferable. Furthermore, the local host must be defined on the remote host, in the remote "/etc/hosts" and "hosts.equiv" (or "hosts.lpd") files. Otherwise, the print job will be rejected.
For "Remote LPR" printers, the EtherShare Admin copies the font information from the chosen PPD file into the "FONTS" file in the printer's spool directory when the printer is created.
When it starts, each "tcpif" process first accesses the main configuration file "atalk.conf" to determine its configuration. Printers can be set up if necessary by using an editor such as vi, but we strongly recommend that you do this with the EtherShare Admin instead. See also chapter "5.14 Editing "atalk.conf" (and other configuration files) manually".
The following parameters can be defined for "tcpif" in "atalk.conf". The parameter list is preceded by the logical printer name such as "Laser3:", which is assigned to "tcpif" by linking.
host
host=inetno
inetno
is the Internet number of the printer in the TCP/IP network (or of the printer's terminal server, if any). inetno can be specified in the conventional way (dotted decimal notation) by using the "." character as a separator. Alternatively, a host name from the "/etc/hosts" file can be specified here instead. Examples:
host=192.9.200.1 or host=osiris
In the case of "Remote LPR" connections, inetno is the Internet number or name of the host which the remote printer is connected to.
statusport
[no]statusport
This switch determines whether a separate communications channel for status messages with the address <port+1> is provided.
The default is statusport.
service
service=port
port
is the service port number (also called the service code), which specifies the process within host which is responsible for the printer. The port number lies between 1 and 65535. Alternatively, a service name from the "/etc/services" file can be specified here instead.
Examples:
service=4000 or service=bspp
"tcpif" normally uses the "TCP/IP stream" protocol; the "Remote LPR" protocol is configured instead if you specify service=printer or service=515. You must specify the "rprinter" parameter, too.
noctrld
[no]ctrld
ctrld
determines whether the Ctrl-D character should be used to indicate "end-of-print-job". This is necessary if the printer is connected to TCP/IP through a terminal server and a serial interface. See 8-bit transparency above for related information.
The default for this switch is noctrld.
tcpresolve
[no]tcpresolve
When a print job is processed, and the switch is set to notcpresolve, the print job remains "untouched" and passes without any changes.
The default is tcpresolve.
writesize
writesize=block
block
is the number of bytes that are send through the network in a single write. The minimum value for block is 4096.
The default value for block is 8192.
rprinter
rprinter=name
name
is the name of the remote printer on the remote host, as specified in the remote "/etc/printcap" file.
Example:
rprinter=rlw
The following is a typical "atalk.conf" entry for a "TCP/IP stream" printer:
papsrv: name="TCPSpooler", printer="Laser3"
Laser3: host=192.9.200.1, service=4000

The following is a typical "atalk.conf" entry for a "Remote LPR" printer:
papsrv: name="osiris-remote-spooler",printer="rm1"
rm1: host="ibm", service=printer, rprinter="lw"

The entry required by the "lpr" program in "/etc/printcap" for a "TCP/IP" or "Remote LPR" printer is very similar to that required by a PAP PostScript printer.
The following is a typical example:
Laser3:\
:lp=/usr/local/es/lprdevdir/Laser3:\
:if=/usr/local/es/if/Laser3:\
:of=/usr/local/es/psof:\
:sh:mx#0:du#0:sf:\
:sd=/usr/spool/Laser3:\
:af=/usr/adm/printer.acct:\
:lf=/usr/spool/Laser3/Laser3-log:

The interface program (if=) specifies the logical printer name "Laser3" instead of "tcpif". "Laser3" is a "link" to "tcpif" through a subdirectory of the "$ESDIR" directory.
Do not be concerned that the above entry does not contain the string "remote" or "rm", this is normal since EtherShare does not recognize that entry.
If the printer needs several alternative logical names, they can be specified manually on the first line of the "/etc/printcap" entry separated by the "|" character, for example:
Laser3|lw|ps|PostScript:\
Note that all logical (UNIX) printer names must be unique on each host; the names must not include spaces.
11.6.5 Shared Memory software RIPs
PostScript software RIPs running on the same host as EtherShare can communicate with the Print Server through a "Shared Memory" interface. The RIP must be compatible with the EtherShare "Shared Memory" interface specification and be installed by authorized personnel (RIP vendor technical staff) - contact your RIP manufacturer or HELIOS supplier if you are not sure about this.
The RIP must be configured and running before you create the printer queue with the EtherShare Admin.
The interface program for the "Shared Memory" interface is the "shmif" program (see "11.3 The Print Server Programs"). "shmif" is called by the UNIX system program "lpd", and extracts additional configuration information from the "/etc/printcap" file by using the logical (UNIX) printer name received from "lpr" as the key.
When it starts, each "shmif" process first accesses the main configuration file "atalk.conf" to determine its configuration. Printers can be set up if necessary by using an editor such as vi, but we strongly recommend that you do this with the EtherShare Admin instead. See also chapter "5.14 Editing "atalk.conf" (and other configuration files) manually".
The following parameter can be defined for "shmif" in "atalk.conf". The parameter list is preceded by the logical printer name such as "shm1", which is assigned to "shmif" by linking.
key
key=path
path
specifies the path (including file name) of the Shared Memory "key" file. The file must already exist. The RIP must be configured with the same path.
The RIP and the "Shared Memory" interface program use the key file's "inode" to create a unique numeric key, and do not modify or write to the file in any other way. Accordingly, any existing file (such as "/bin/ls") can be used for this purpose. See the description of "ftok" in your UNIX documentation for related information.
There is no default for path.
The following is a typical "atalk.conf" entry for a "Shared Memory" RIP:
papsrv: name="shm-spooler", printer="shm1"
shm1: key="/bin/ls"

The entry required by the "lpr" program in "/etc/printcap" for a "Shared Memory" software RIP is very similar to that required by a PAP PostScript printer.
11.6.6 Printing to disk
You may want to automatically generate PDF files, then you can print to files in a specific UNIX directory and induce the Acrobat Distiller software to scan this directory regularly and convert incoming files to PDF.
The interface program which processes the print jobs is
"diskif" (see "11.3 The Print Server Programs"). It comprises the following parameters:
dir
dir=path
path
specifies the (absolute) UNIX path of the directory, where the processed print job is stored. The file name results from the print job title with the typically appended suffix ".ps".
If path points to UNIX FIFO (named "pipe") rather than pointing to a directory, the processed print data are written to that "pipe" directly.
If path starts with a pipe character ("|") the whole string following "|" is recognized as a UNIX command line, and the processed print data are piped into the executed program.
pssuffix
[no]pssuffix
This switch determines whether the suffix ".ps" is appended to the processed print job file. In case the switch is set to nopssuffix the file name extension ".ps" is omitted.
The default is pssuffix.
prefix
prefix=filenameprefix
filenameprefix
specifies whether files which come from a specific printer queue are "marked" with a prefix before their original file name. This may be quite reasonable when several "Print To Disk" queues print to the same destination.
resolve
[no]resolve
When a print job is processed to a "Print To Disk" queue, and the switch is set to noresolve, the print job remains "untouched" and passes without any changes.
The default is resolve.
notifyprog
notifyprog=path
path
is the (absolute) UNIX path of the program which, as soon as "diskif" has successfully resolved the print job, is started with the parameters: -Pprintername pathtopsfile
e.g.: notifyprog=/usr/local/bin/distillnotify
"diskif" exports the following environment variables during the program call:
HELIOS_JOBFOR=<user name (if available) of print job creator>
HELIOS_JOBUSER=<user name (if available) as known to "lpd">
HELIOS_JOBHOST=<name (if available) of server which hosts the printer queue>
HELIOS_JOBTITLE=<print job title (if available)>
HELIOS_PRINTERNAME=<logical (UNIX) name of the printer queue>
HELIOS_JOBPAGES=<expected number of pages. This value may differ slightly from the actual number>
HELIOS_JOBSIZE=<expected print job size (in bytes). The stated value is often smaller than the actual size>
compression
compression=mode
mode
determines the compression type. You can choose from different types of compressing: LZW, ZIP, and None. None means there is no file compression at all.
11.6.7 Printing to a hold/error queue
The printer interface programs (e.g. "tcpif", "psif", "diskif", etc.) can be configured to forward all processed print jobs to a hold queue. On a hold queue the resolved jobs are stored for an adjustable amount of time. However, the printer interfaces can also be configured to forward faulty print jobs - e.g. due to PostScript errors or failed pre-flight checks - to an error queue. In fact, an error queue is basically also a hold queue.
The interface program "holdif" (see "11.3 The Print Server Programs") stores the print jobs for an adjustable amount of time before dropping it. It has the following parameters:
jobholdtime
jobholdtime=seconds
seconds
determines the time a processed print job remains on a hold/error queue. If seconds is set to 0, the print job perpetually remains on the hold/error queue. This parameter is compulsory, i.e. it has to be set with a certain value.
11.6.8 Balancing print job loads
You may direct your print jobs to a balance queue. In a balance queue two or more printers form a group of printers from which the print jobs are shifted to a second or third printer in this group whenever the first printer is busy with a huge job.
The interface program for balancing print jobs is "balanceif" (see "11.3 The Print Server Programs"). It has the following parameter:
printers
printers=listofprinters
listofprinters
is a string which contains, separated by commas and without any spaces, the logical (UNIX) printer names of those devices which form a printer group for balancing print loads
E.g.: printers=color,color2,pro630
11.7 Adobe Document Structuring Conventions
The EtherShare Print Server system has been designed to meet Adobe's Document Structuring Conventions. The following paragraphs describe some of the more important features. Please refer to Adobe's "Guidelines for a Distributed Printing Environment" for more details.
"ProcSet Queries" are handled as follows by the Print Server program "papsrv":
"procsets" sent by a Macintosh application with a print job are captured automatically by "papsrv" and stored in "$ESDIR/dicts" with a name similar to the original "procset" name. If a following application needs the same "procset", it is sent from the "$ESDIR/dicts" directory rather than transferring it again from the Macintosh to the Print Server via the network.
Certain PostScript comments are recognized and reacted on by the EtherShare printer interface programs ("papif", "psif", "tcpif", "shmif", and "diskif") as follows:
%%IncludeProcSet
%%IncludeResource: procset

If possible, the specified procset will be included in the print job from the "$ESDIR/dicts" directory. Otherwise, you will get a warning message.
%%DocumentProcSets
%%DocumentNeededProcSets
%%DocumentNeededResources: procset

All procsets needed - but not supplied - by the document will be included from the "$ESDIR/dicts" directory in the print job.
%%IncludeFont (obligatory includes)
%%IncludeResource: font

If possible, the specified font will be included in the print job from the "$ESDIR/psfonts" directory, which contains download PostScript fonts which have been installed there manually with the EtherShare Admin.
%%DocumentFonts
%%DocumentNeededFonts
%%DocumentNeededResources: font

All fonts needed by the document which are not resident in the printer are included with the print job. To do this, the Print Server checks the corresponding printer resident font list "/usr/spool/<printername>/FONTS". This file can be updated using the EtherShare Admin if you install new resident fonts on your printer. In case the resident font list cannot be determined, the font information from the chosen PPD is used instead.
In case a requested font cannot be included the respective interface program sends an error message via "afpmsg" to the user. Users who have installed Helios Mail on their Macintosh will additionally receive the message directly on their workstation.
%%IncludeFile
%%IncludeResource: file
%%IncludeDocument

If possible, the specified file (e.g. an EPS picture) will be included in the print job. The file can be specified with either UNIX or Macintosh file and path name conventions. In the latter case, the Print Server determines the corresponding UNIX directory by inspecting the File Server's volume list from "$ESDIR/conf/afpvolumes".
%%IncludeFeature
If possible, the specified feature from the printer queue's PPD file will be included in the print job.
The printer interface program accepts messages from each printer while printing. The messages are checked for error situations, which are forwarded to the originating user accordingly.
EtherShare's automatic font downloader also supports all programs that print with Apple's "QuickDraw" driver, or with native PostScript containing "Adobe Document Structuring" comments. TrueType fonts are passed transparently from the Macintosh to the printer through the Print Server, but cannot be installed in the font downloader in the present version.
Linotype
Color
Separation
Extensions
The Print Server also supports "Linotype Color Separation Extensions" - the Print Server interface programs function as an ICS (Included Color Separation) includer. A special PostScript dictionary "LinoDict 1.0" is provided in "$ESDIR/dicts" for this purpose. This functionality can also co-exist with the EtherShare OPI option without conflict. Please contact HELIOS if you need more details.

© 2002 HELIOS Software GmbH