|  | <sect1 id="config-printing"> | 
|  | <title>Printing in Wine</title> | 
|  | <para>How to print documents in Wine...</para> | 
|  |  | 
|  | <sect2 id="config-printing-intro"> | 
|  | <title>Printing</title> | 
|  |  | 
|  | <para> | 
|  | Printing in Wine can be done using the built-in Wine PostScript driver (+ ghostscript to produce | 
|  | output for non-PostScript printers). | 
|  | </para> | 
|  | <para> | 
|  | Note that at the moment WinPrinters (cheap, dumb printers that require | 
|  | the host computer to explicitly control the head) will not work with | 
|  | their Windows printer drivers.  It is unclear whether they ever will. | 
|  | </para> | 
|  |  | 
|  | <sect3> | 
|  | <title>Built-in Wine PostScript driver</title> | 
|  | <para> | 
|  | Enables printing of PostScript files via a driver built into Wine. See | 
|  | below for installation instructions. The code for the PostScript | 
|  | driver is in <filename>dlls/wineps/</filename>. | 
|  | </para> | 
|  | <para> | 
|  | The driver behaves as if it were a DRV file called | 
|  | <filename>wineps.drv</filename> which at the moment is built into | 
|  | Wine. | 
|  | Although it mimics a 16 bit driver, it will work with both 16 and 32 | 
|  | bit apps, just as win9x drivers do. | 
|  | </para> | 
|  | </sect3> | 
|  |  | 
|  | <sect3> | 
|  | <title>Spooling</title> | 
|  | <para> | 
|  | Spooling is rather primitive. The [spooler] section of | 
|  | the wine config file maps a port (e.g. | 
|  | <systemitem>LPT1:</systemitem>) to a file or a command via a pipe. For | 
|  | example the following lines | 
|  | </para> | 
|  | <screen> | 
|  | "LPT1:" = "foo.ps" | 
|  | "LPT2:" = "|lpr" | 
|  | </screen> | 
|  | <para> | 
|  | map <systemitem>LPT1:</systemitem> to file <filename>foo.ps</filename> | 
|  | and <systemitem>LPT2:</systemitem> to the <command>lpr</command> | 
|  | command. If a job is sent to an unlisted port, then a file is created | 
|  | with that port's name; e.g. for <systemitem>LPT3:</systemitem> a file | 
|  | called <systemitem>LPT3:</systemitem> would be created. | 
|  | </para> | 
|  | <para> | 
|  | There are now also virtual spool queues called | 
|  | <systemitem>LPR:printername</systemitem>, which send the data | 
|  | to <command>lpr -Pprintername</command>. You do not need to | 
|  | specify those in the config file, they are handled automatically by | 
|  | <filename>dlls/gdi/printdrv.c</filename>. | 
|  | </para> | 
|  | </sect3> | 
|  | </sect2> | 
|  |  | 
|  | <sect2 id="config-printing-psdriver"> | 
|  | <title>The Wine PostScript Driver</title> | 
|  |  | 
|  | <para> | 
|  | This allows Wine to generate PostScript files without | 
|  | needing an external printer driver. Wine in this case uses the | 
|  | system provided PostScript printer filters, which almost all use | 
|  | ghostscript if necessary. Those should be configured during the | 
|  | original system installation or by your system administrator. | 
|  | </para> | 
|  |  | 
|  | <sect3> | 
|  | <title>Installation</title> | 
|  | <sect4> | 
|  | <title>Installation of CUPS printers</title> | 
|  | <para> | 
|  | If you are using CUPS, you do not need to configure .ini or | 
|  | registry entries, everything is autodetected. | 
|  | </para> | 
|  | </sect4> | 
|  | <sect4> | 
|  | <title>Installation of LPR /etc/printcap based printers</title> | 
|  | <para> | 
|  | If your system is not yet using CUPS, it probably uses LPRng | 
|  | or a LPR based system with configuration based on <filename>/etc/printcap</filename>. | 
|  | </para> | 
|  | <para> | 
|  | If it does, your printers in <filename>/etc/printcap</filename> | 
|  | are scanned with a heuristic whether they are PostScript capable | 
|  | printers and also configured mostly automatic. | 
|  | </para> | 
|  | <para> | 
|  | Since Wine cannot find out what type of printer this is, you | 
|  | need to specify a PPD file in the [ppd] section of | 
|  | <filename>~/.wine/config</filename>. Either use the shortcut | 
|  | name and make the entry look like: | 
|  | </para> | 
|  | <screen> | 
|  | [ppd] | 
|  | "ps1" = "/usr/lib/wine/ps1.ppd" | 
|  | </screen> | 
|  | <para> | 
|  | Or you can specify a generic PPD file that is to match for all | 
|  | of the remaining printers. A generic PPD file can be found in | 
|  | <filename>documentation/samples/generic.ppd</filename>. | 
|  | </para> | 
|  | </sect4> | 
|  | <sect4> | 
|  | <title>Installation of other printers</title> | 
|  | <para> | 
|  | You do not need to do this if the above 2 sections apply, only if | 
|  | you have a special printer. | 
|  | </para> | 
|  | <screen> | 
|  | Wine PostScript Driver=WINEPS,LPT1: | 
|  | </screen> | 
|  | <para> | 
|  | to the [devices] section and | 
|  | </para> | 
|  | <screen> | 
|  | Wine PostScript Driver=WINEPS,LPT1:,15,45 | 
|  | </screen> | 
|  | <para> | 
|  | to the [PrinterPorts] section of <filename>win.ini</filename>, | 
|  | and to set it as the default printer also add | 
|  | </para> | 
|  | <screen> | 
|  | device = Wine PostScript Driver,WINEPS,LPT1: | 
|  | </screen> | 
|  | <para> | 
|  | to the [windows] section of <filename>win.ini</filename>. | 
|  | </para> | 
|  | <para> | 
|  | You also need to add certain entries to the registry. | 
|  | The easiest way to do this is to customize the PostScript | 
|  | driver contents of <filename>winedefault.reg</filename> (see below) and use the | 
|  | Winelib program <command>programs/regedit/regedit</command>.  For | 
|  | example, if you have installed the Wine source tree in | 
|  | <filename>/usr/src/wine</filename>, you could use the following | 
|  | series of commands: | 
|  | <itemizedlist> | 
|  | <listitem> | 
|  | <para> | 
|  | <userinput>cp /usr/src/wine/winedefault.reg ~</userinput> | 
|  | </para> | 
|  | </listitem> | 
|  | <listitem> | 
|  | <para> | 
|  | <userinput>vi ~/winedefault.reg</userinput> | 
|  | </para> | 
|  | </listitem> | 
|  | <listitem> | 
|  | <para> | 
|  | Edit the copy of <filename>winedefault.reg</filename> to suit your | 
|  | PostScript printing requirements. | 
|  | At a minimum, you must specify a PPD file for each printer. | 
|  | </para> | 
|  | </listitem> | 
|  | <listitem> | 
|  | <para> | 
|  | <userinput>regedit ~/winedefault.reg</userinput> | 
|  | </para> | 
|  | </listitem> | 
|  | </itemizedlist> | 
|  | </para> | 
|  | </sect4> | 
|  | <sect4> | 
|  | <title>Required configuration for all printer types</title> | 
|  | <para> | 
|  | You won't need Adobe Font Metric (AFM) files for the (type 1 PostScript) | 
|  | fonts that you wish to use any more. | 
|  | Wine now has this information built-in. | 
|  | </para> | 
|  | <para> | 
|  | You'll need a PPD file for your printer.  This describes | 
|  | certain characteristics of the printer such as which fonts are | 
|  | installed, how to select manual feed etc. Adobe has many of | 
|  | these on its website, have a look in | 
|  | <ulink url="ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/"> | 
|  | ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/</ulink>. | 
|  | See above for information on configuring the driver to use this | 
|  | file. | 
|  | </para> | 
|  | <para> | 
|  | To enable colour printing you need to have the | 
|  | <literal>*ColorDevice</literal> entry in the PPD set to | 
|  | <literal>true</literal>, otherwise the driver will generate | 
|  | greyscale. | 
|  | </para> | 
|  | <para> | 
|  | Note that you need not set <literal>printer=on</literal> in | 
|  | the [wine] section of the wine config file, this | 
|  | enables printing via external printer drivers and does not | 
|  | affect the built-in PostScript driver. | 
|  | </para> | 
|  | <para> | 
|  | If you're lucky you should now be able to produce PS files | 
|  | from Wine! | 
|  | </para> | 
|  | <para> | 
|  | I've tested it with win3.1 notepad/write, Winword6 and | 
|  | Origin4.0 and 32 bit apps such as win98 wordpad, Winword97, | 
|  | Powerpoint2000 with some degree of success - you should be | 
|  | able to get something out, it may not be in the right place. | 
|  | </para> | 
|  | </sect4> | 
|  | </sect3> | 
|  |  | 
|  | </sect2> | 
|  | </sect1> | 
|  |  | 
|  | <!-- Keep this comment at the end of the file | 
|  | Local variables: | 
|  | mode: sgml | 
|  | sgml-parent-document:("wine-user.sgml" "set" "book" "chapter" "") | 
|  | End: | 
|  | --> |