Advanced Printer Setup

This section describes how to manually customize CrossOver's printing configuration to better suit your particular printer or system. However CrossOver uses CUPS to provide out-of-the-box support for most printers with no additional configuration. So in most cases you can simply ignore this section.

Adding a Printer

CrossOver supports the use of multiple printers. To setup another printer for use with CrossOver, you will need to manually edit three configuration files in the "~/.cxoffice/bottlename" directory: user.reg, win.ini, and system.reg.

[Important]

The instructions in this section will configure a printer for a single bottle. You will need to add the printer entries to each bottle containing apps from which you plan on printing. Once you have the printer configured for a single bottle, you can use the copy bottle feature on the Manage Bottles tab to duplicate the configured bottle.

user.reg.  Open "~/.cxoffice/bottlename/user.reg", and find the entry for LPT2 in the [Software\\Wine\\Printing\\Spooler] section. Modify it to pipe the output to lpr and specify the printer with the -P option:

[Software\\Wine\\Printing\\Spooler] 1128518253
"FILE:"="tmp.ps"
"KDE:"="|kprinter --stdin"
"LPT1:"="|lpr"
"LPT2:"="|lpr -Pmy_second_printer"
"LPT3:"="/dev/lp3"

win.ini.  Now edit "~/.cxoffice/bottlename/win.ini", and add a new line for the second printer in the [devices] section:

[devices]
Wine PostScript Driver=WINEPS,LPT1:
Printer2=WINEPS,LPT2:

Additionally, if you want to make the new printer the default, then alter the device= line in the [windows] section:

[windows]
device=Printer2,WINEPS,LPT2:

system.reg.  Finally, you will need to modify some of the keys in CrossOver's registry file, "~/.cxoffice/bottlename/system.reg". In this file, duplicate the [..\\Wine PostScript Driver] key and its [..\\PrinterDriverData] subkey. If it exists also duplicate the [..\\FontSubTable] subkey. Then substitute the name associated with LPT2 in the [devices] section of the win.ini file from above for the last tag in the section name for those keys. You will also need to change the "Name" and "Port" fields accordingly.

[System\\CurrentControlSet\\Control\\Print\\Printers\\Printer2] ...
...
"Name"="Printer2"
"Port"="LPT2:"
...

[System\\CurrentControlSet\\Control\\Print\\Printers\\Printer2\\PrinterDriverData] ...
"PPD File"=str(2):"%WINEPREFIX%/generic.ppd"

[System\\CurrentControlSet\\Control\\Print\\Printers\\Printer2\PrinterDriverData\\FontSubTable] ...
"Arial"="Helvetica"
"Courier New"="Courier"
...

Customizing the Printer Description

A PostScript Printer Description (PPD) file provides characteristics such as which fonts are installed, how to select manual feed, etc. for a specific type of printer. You can configure CrossOver's printer driver to use the PPD file for your particular printer rather than the generic PPD file that CrossOver ships with. This involves downloading (or otherwise acquiring) the PPD file for your printer, and then specifying its location in CrossOver's registry.

Getting the PPD File For Your Printer

There are a number of archived PostScript Printer Description files on Adobe's website, listed by vendor name. If you don't find one to suit your printer, you could try our generic.ppd, perhaps tailoring it as needed.

Save the file that corresponds to your printer vendor in the /tmp (or similar) directory.

The files from Adobe's website are self-extracting archives. To decompress the PPD files, use wine to run the extractor, as follows. Substitute the name of the archive you downloaded for hp.exe.

$ ~/cxoffice/bin/wine /tmp/hp.exe

Unzip them into the default folder C:\Temp\ADOBE. You may want to uncheck the radio button that suggests viewing the readme file when it's done.

Updating the Registry

The registry needs to contain the path to the PPD file for your printer. To get the location of the PPD files that were extracted from the archive, you can use this command:

$ find "~/.cxoffice" -iname "*.ppd"

Determine which of the PPD files returned by the search corresponds to your printer. For an HP LaserJet 5M this would be HPLJ5M_4.PPD. Note that the PPD files are simple text files containing product names along with the properties of the printers they describe.

We recommend that you then put the new PPD file in the same directory as the default generic.ppd file, which is in "~/.cxoffice/bottlename".

Now you are ready to specify your printer's description in the Wine registry. Open it in your favorite editor:

$ vi "~/.cxoffice/bottlename/system.reg"

Find the "PPD File" entry (a search is the best way), and replace "generic.ppd" with the name of the PPD file for your printer. Then save and close the file.

CrossOver's registry information now contains entries that specify this PPD file for your printer. If all went well, you should be able to print using the Wine PostScript Driver from within WordViewer, etc.