  <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>
        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:
      </para>
      <orderedlist>
        <listitem>
          <para>
            Use the built-in Wine PostScript driver (+ ghostscript to produce
            output for non-PostScript printers).
          </para>
        </listitem>
        <listitem>
          <para>Use an external windows 3.1 printer driver (outdated, probably won't get supported any more).</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>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>External printer drivers (non-working as of Jul 8, 01)</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 the wine config file. 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>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>
        Written by &name-huw-davies; <email>&email-huw-davies;</email>
      </para>
      <para>
        (Extracted from <filename>wine/documentation/psdriver</filename>)
      </para>

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

      <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-user.sgml" "set" "book" "chapter" "")
End:
-->
