| <chapter id="printing"> |
| <title>Printing in Wine</title> |
| <para>How to print documents in Wine...</para> |
| |
| <sect1 id="wine-printing"> |
| <title>Printing</title> |
| |
| <para> |
| Written by &name-huw-davies; <email>&email-huw-davies;</email> |
| </para> |
| <para> |
| (Extracted from <filename>wine/documentation/printing</filename>) |
| </para> |
| |
| <para> |
| Printing in Wine can be done in one of two ways. Both of which are pretty alpha. |
| </para> |
| <orderedlist> |
| <listitem> |
| <para>Use an external windows 3.1 printer driver.</para> |
| </listitem> |
| <listitem> |
| <para> |
| Use the builtin Wine Postscript driver (+ ghostscript to produce |
| output for non-postscript printers). |
| </para> |
| </listitem> |
| </orderedlist> |
| |
| <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> |
| |
| <sect2> |
| <title>External printer drivers</title> |
| <para> |
| At present only 16 bit drivers will work (note that these include win9x |
| drivers). To use them, add |
| </para> |
| <screen> |
| printer=on |
| </screen> |
| <para> |
| to the [wine] section of <filename>wine.conf</filename> (or |
| <filename>~/.winerc</filename>). This lets |
| <function>CreateDC</function> proceed if its driver argument is a 16 |
| bit driver. You will probably also need to add |
| </para> |
| <screen> |
| TTEnable=0 TTOnly=0 |
| </screen> |
| <para> |
| to the [TrueType] section of <filename>win.ini</filename>. The code for |
| the driver interface is in <filename>graphics/win16drv</filename>. |
| </para> |
| </sect2> |
| |
| <sect2> |
| <title>Builtin Wine PostScript driver</title> |
| <para> |
| Enables printing of PostScript files via a driver built into Wine. See |
| <filename>documentation/psdriver</filename> for installation |
| instructions. The code for the PostScript driver is in |
| <filename>graphics/psdrv</filename>. |
| </para> |
| </sect2> |
| |
| <sect2> |
| <title>Spooling</title> |
| <para> |
| Spooling is rather primitive. The [spooler] section of |
| <filename>wine.conf</filename> 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> |
| </sect2> |
| </sect1> |
| |
| <sect1 id="psdriver"> |
| <title>The Wine PostScript Driver</title> |
| |
| <para> |
| Written by &name-huw-davies; <email>&email-huw-davies;</email> |
| </para> |
| <para> |
| (Extracted from <filename>wine/documentation/psdriver</filename>) |
| </para> |
| |
| <para> |
| When complete this will allow Wine to generate PostScript files without |
| needing an external printer driver. It should be possible to print to a |
| non PostScript printer by filtering the output through ghostscript. |
| </para> |
| |
| <sect2> |
| <title>Installation</title> |
| <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> |
| <para> |
| To install it add |
| </para> |
| <screen> |
| Wine PostScript Driver=WINEPS,LPT1: |
| </screen> |
| <para> |
| to the [devices] 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> and ??? |
| <emphasis>[sic]</emphasis> |
| </para> |
| <para> |
| To run 32 bit apps (and 16 bit apps using the |
| <literal>builtin</literal> commdlg) you also need to add certain |
| entries to the registry. The easiest way to do that at the moment is |
| to use the winelib program <command>programs/regapi/regapi</command> |
| with the file <filename>documentation/psdrv.reg</filename>. To do this |
| <command>cd</command> to <filename>programs/regapi/regapi</filename> |
| and type <userinput>make</userinput> to actually make the program, then |
| type <userinput>./regapi setValue |
| <../../documentation/psdrv.reg</userinput>. You can obviously |
| edit <filename>psdrv.reg</filename> to suit your requirements. |
| </para> |
| <para> |
| You will need Adobe Font Metric (AFM) files for the (type 1 PostScript) |
| fonts that you wish to use. You can get these from |
| <ulink url="ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles"> |
| ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles </ulink>. The |
| directories <filename>base17</filename> or <filename>base35</filename> |
| are good places to start. Note that these are only the font metrics and |
| not the fonts themselves. At the moment the driver does not download |
| additional fonts, so you can only use fonts that are already present on |
| the printer. |
| </para> |
| <para> |
| Then create a [afmfiles] section in your |
| <filename>wine.conf</filename> (or |
| <filename>~/.winerc</filename>) and add a line of the form |
| </para> |
| <screen> |
| file<n>=/unix/path/name/filename.afm |
| </screen> |
| <para> |
| for each AFM file that you wish to use. [This might change in the future] |
| </para> |
| <para> |
| You also require 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 also 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>. Create |
| a [psdrv] section in your <filename>wine.conf</filename> (or |
| <filename>~/.winerc</filename>) and add the following entry: |
| </para> |
| <screen> |
| ppdfile=/somewhere/file.ppd |
| </screen> |
| <para> |
| By default, the driver will look for a file named |
| <filename>default.ppd</filename> in the directory from which |
| you started wine. |
| </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 <filename>wine.conf</filename>, this |
| enables printing via external printer drivers and does not |
| affect wineps. |
| </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> |
| </sect2> |
| |
| <sect2> |
| <title>TODO / Bugs</title> |
| |
| <itemizedlist> |
| <listitem> |
| <para> |
| Driver does read PPD files, but ignores all constraints |
| and doesn't let you specify whether you have optional |
| extras such as envelope feeders. You will therefore find |
| a larger than normal selection of input bins in the |
| print setup dialog box. I've only really tested ppd |
| parsing on the <filename>hp4m6_v1.ppd</filename> file. |
| </para> |
| </listitem> |
| <listitem> |
| <para>No TrueType download.</para> |
| </listitem> |
| <listitem> |
| <para>StretchDIBits uses level 2 PostScript.</para> |
| </listitem> |
| <listitem> |
| <para>AdvancedSetup dialog box.</para> |
| </listitem> |
| <listitem> |
| <para>Many partially implemented functions.</para> |
| </listitem> |
| <listitem> |
| <para>ps.c is becoming messy.</para> |
| </listitem> |
| <listitem> |
| <para> |
| Notepad often starts text too far to the left depending |
| on the margin settings. However the win3.1 |
| <filename>pscript.drv</filename> (under wine) also does |
| this. |
| </para> |
| </listitem> |
| <listitem> |
| <para>Probably many more...</para> |
| </listitem> |
| </itemizedlist> |
| |
| <para> |
| Please contact me if you want to help so that we can avoid duplication. |
| </para> |
| <para> |
| &name-huw-davies; <email>&email-huw-davies;</email> |
| </para> |
| </sect2> |
| </sect1> |
| </chapter> |
| |
| <!-- Keep this comment at the end of the file |
| Local variables: |
| mode: sgml |
| sgml-parent-document:("wine-doc.sgml" "set" "book" "chapter" "") |
| End: |
| --> |