Index - 1.0 X Print Service Overview - 2.0 How the X Print Service Works - 3.0 Using the X Print Service - 3.1 X Print Server Configuration - 3.2 Starting the X Print Service - 3.3 Configuring the environment - 3.4 General End-User Sequence
The "X Print Service" technology allows X rendering to devices such as printers and fax. Most of the service is available in the X11 technology stack as Xp, with the remainder in the CDE technology stack as DtPrint. Modifications have also been made to the Motif technology stack to support Xp and DtPrint.
The Xp portion consists of:
The DtPrint portion consists of:
From an X clients perspective, it can attach to one of two nearly identical X-Servers, a "Video" X-Server, and a "Print" X-Server which has the additional Xp capability but otherwise looks and behaves the same.
The X Print Service expands on the traditional X-Server and Xlib world in four ways.
Once a print ddx driver generates PDL output, it can be sent to a spooler such as lp(1) or retrieved by the client.
Though not currently done, a single X-Server can support both print and video ddx drivers.
Once a printer is selected using the Xp Extension API, a print context to represent it can be created. A print context embodies the printer selected - it contains the printer's default capabilities, selectable range of capabilities, printer state, and generated output. Some "attributes" within the print context can be modified by the user, and the X-Server and print ddx driver will react accordingly. For example, the attribute "content-orientation" can be set to "landscape" or "portrait".
When a print context is created and set for a given printer, the X font calls may be able to access additional printer fonts. To do this (typically), the X-Server must have access to "printer metric files" (.pmf) that describe at minimum the metrics of the built in fonts.
There are three tasks to start the X Print Service: 1) configuring the X Print Server, 2) starting the X Print Service, 3) configuring the user session so that clients can find the running X Print Service.
The tasks are described in detail below.
The X Print Server (Xprt) can read a number of configuration files which control its behavior and support for printers. Each vendor platform has a default location for this information. Xprt can also read the environment variable XPCONFIGDIR to locate alternate configuration directories. Common settings include:
Xprt has many built-in defaults, and lacking any configuration files, will immediately try to support all printers visible via lpstat(1).
In order of importance for configuration by a system administrator, the configuration files for a "C" locale are as follows.
${XPCONFIGDIR}/C/print/Xprinters `Xprinters' is the top most configuration file. It tells Xprt which specific printer names (e.g. mylaser) should be supported, and whether lpstat(1) or other commands should be used to automatically supplement the list of printers. ${XPCONFIGDIR}/C/print/attributes/printer The `printer' file maps printer names to model configurations (see `model-config' below). For example, "mylaser" could be mapped to a "HPDJ1600C", and all other arbitrary printers could be mapped to a default, such as "HPLJ4SI". When depending on lpstat(1) in the Xprinters file, setting up defaults in `printer' becomes all the more important. ${XPCONFIGDIR}/C/print/attributes/document The `document' file specifies the initial document values for any print jobs. For example, which paper tray to use, what default resolution, etc. ${XPCONFIGDIR}/C/print/attributes/job The `job' file specifies the initial job values for any print jobs. For example, "notification-profile" can be set so that when a print job is successfully sent to a printer, e-mail is sent to the user. ${XPCONFIGDIR}/C/print/models/HPDJ1600C/model-config ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/fonts.dir ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/9nb00051.pmf ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/9nb00093.pmf The `model-config' file has attributes that describe the printer model's capabilities and default settings. Printer model fonts may also be present. The model-config file also identifies the print ddx driver to be used. For each printer model supported, a complete hierarchy of files should exist. In most cases, these files do not need to be modified. ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript The print ddx drivers can have highly specific configuration files to control their behavior. In most cases, these files do not need to be modified.
The summary checklist for starting the X Print Service is as follows:
Because the X Print Service is based on X, it can be easily distributed. The most significant factors in which execution model to choose will be driven by:
Startup would likely be done by boot-up scripts.
Startup would likely be done by boot-up scripts.
Startup would likely be done at session login or by launching actions or processes manually once the user logs in. Note: the dtpdmd must be started after Xprt.
[machineA] % Xprt [-XpFile <Xprinters file>] [:dispNum] & Note that Xprt will look for configuration files in either a default location or where XPCONFIGDIR points. -XpFile specifies an alternate `Xprinters' file, rather than the default one or `${XPCONFIGDIR}/C/print/Xprinters'. [machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] & The dtpdmd will maintain an X-Selection on the X-Server, and will start dtpdm's as required to service requests.In all but the per-user session model, the machine running the dtpdmd (thus dtpdm's) will need display authorization to the users video display.
Once a X Print Server and dtpdmd have been started -- many of them in some cases -- clients will need to find and use them. There are two mechanisms that allow clients to discover X Print Servers and printers.
printer_name@machine[:dispNum]For example:
colorlj7@printhub:2In the above example, the X Print Server running at `printhub:2' is assumed to support the printer named `colorlj7'.
XPSERVERLIST="printhub:2 printhub:3 otherdept:0"Then in the dialogs, only a printer name needs to be entered. The dialog will then search the X Print Servers in XPSERVERLIST for a server than supports the printer, and then establish contact.
From most CDEnext applications, printing is accomplished by bringing down the <File> menu and selecting <Print...>. This will result in the DtPrintSetupBox dialog, which will request the name of a printer, and offer limited capability to configure print options (e.g. number of copies). If the user wishes, they can select <Setup...>, which will start a dtpdm capable of modifying additional print options. Finally, the user should select <Print>.