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