2000-08-08 03:24:00 +02:00
|
|
|
<chapter id="printing">
|
|
|
|
<title>Printing in Wine</title>
|
|
|
|
<para>How to print documents in Wine...</para>
|
|
|
|
|
|
|
|
<sect1 id="wine-printing">
|
|
|
|
<title>Printing</title>
|
|
|
|
|
|
|
|
<para>
|
2000-12-13 22:52:37 +01:00
|
|
|
Written by &name-huw-davies; <email>&email-huw-davies;</email>
|
2000-08-08 03:24:00 +02:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
(Extracted from <filename>wine/documentation/printing</filename>)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2000-12-13 22:52:37 +01:00
|
|
|
Printing in Wine can be done in one of two ways. Both of which are pretty alpha.
|
2000-08-08 03:24:00 +02:00
|
|
|
</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
|
2000-12-13 22:52:37 +01:00
|
|
|
the host computer to explicitly control the head) will not work with
|
|
|
|
their Windows printer drivers. It is unclear whether they ever will.
|
2000-08-08 03:24:00 +02:00
|
|
|
</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>
|
2000-12-13 22:52:37 +01:00
|
|
|
Written by &name-huw-davies; <email>&email-huw-davies;</email>
|
2000-08-08 03:24:00 +02:00
|
|
|
</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>
|
2000-12-20 00:30:51 +01:00
|
|
|
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
|
2000-08-08 03:24:00 +02:00
|
|
|
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>
|
2000-12-13 22:52:37 +01:00
|
|
|
&name-huw-davies; <email>&email-huw-davies;</email>
|
2000-08-08 03:24:00 +02:00
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|
|
|
|
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
|
|
Local variables:
|
|
|
|
mode: sgml
|
2000-12-13 22:52:37 +01:00
|
|
|
sgml-parent-document:("wine-doc.sgml" "set" "book" "chapter" "")
|
2000-08-08 03:24:00 +02:00
|
|
|
End:
|
|
|
|
-->
|