  <sect1 id="printing">
    <title>Printing in Wine</title>
    <para>How to print documents in Wine...</para>

    <sect2 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>

      <sect3>
        <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>~/.wine/config</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>~/.wine/config</filename>. The code for
          the driver interface is in <filename>graphics/win16drv</filename>.
        </para>
      </sect3>

      <sect3>
        <title>Builtin 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>graphics/psdrv</filename>.
        </para>
      </sect3>

      <sect3>
        <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>
      </sect3>
    </sect2>

    <sect2 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>

      <sect3>
        <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 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>~/.wine/config</filename> and ???
          <emphasis>[sic]</emphasis>
        </para>
        <para>
	  You also need to add certain entries to the registry.  The easiest way
	  to do this is to customise the contents of
	  <filename>documentation/psdrv.reg</filename> (see below) and use the
	  Winelib program <command>programs/regapi/regapi</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/documentation/psdrv.reg ~</userinput>
	      </para>
	    </listitem>
	    <listitem>
	      <para><userinput>vi ~/psdrv.reg</userinput></para>
	    </listitem>
	    <listitem>
	      <para>
		Edit the copy of <filename>psdrv.reg</filename> to suit your
		requirements.  At a minimum, you must specify a PPD file for
		each printer.
	      </para>
	    </listitem>
	    <listitem>
	      <para>
		<userinput>regapi setValue &lt; ~/psdrv.reg</userinput>
	      </para>
	    </listitem>
	  </itemizedlist>
        </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.  (Actually, the driver can use any font that is listed in
	  the PPD file, for which it has an AFM file.  If you use fonts that are
	  <emphasis>not</emphasis> installed in your printer, or in
	  Ghostscript, you will need to use some means of embedding the font in
	  the print job or downloading the font to the printer.  Note also that
	  the driver does not yet properly list required fonts in its DSC
	  comments, so a print manager that depends on these comments to
	  download the proper fonts to the printer may not work properly.)
        </para>
        <para>
          Then create a [afmdirs] section in your
          <filename>wine.conf</filename> (or
          <filename>~/.wine/config</filename>) and add a line of the form
        </para>
        <screen>
"dir&lt;n&gt;" = "/unix/path/name/"
        </screen>
        <para>
          for each directory that contains AFM files you wish to use.
        </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>. 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 <filename>wine.conf</filename>, this
          enables printing via external printer drivers and does not
          affect the builtin 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>
      </sect3>

      <sect3>
        <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>
      </sect3>
    </sect2>
  </sect1>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("wine-doc.sgml" "set" "book" "chapter" "")
End:
-->
