Wine PostScript Driver
======================

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.


Installation
------------

The driver behaves as if it were a DRV file called WINEPS.DRV 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.

To install it add

Wine PostScript Driver=WINEPS,LPT1:

to the [devices] section of win.ini and to set it as the default printer also
add

device=Wine PostScript Driver,WINEPS,LPT1:

to the [windows] section of win.ini and


To run 32 bit apps (and 16 bit apps using the builtin 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 programs/regapi/regapi with the file
documentation/psdrv.reg .  To do this cd to programs/regapi/regapi and type
`make' to actually make the program, then type
`./regapi setValue <../../documentation/psdrv.reg' .  You can obviously edit
psdrv.reg to suit your requirements.

You will need Adobe Font Metric (AFM) files for the (type 1 PostScript) fonts
that you wish to use. You can get these from
ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles .  The directories base17
or base35 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.

Then create a [afmfiles] section in your wine.conf (or ~/.winerc) and add a
line of the form

file=/unix/path/name/filename.afm

for each AFM file that you wish to use. [This might change in the future]

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
ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/
Create a [psdrv] section in your wine.conf (or ~/.winerc) and add the 
following entry:

ppdfile=/somewhere/file.ppd

By default, the driver will look for a file named default.ppd in the directory
from which you started wine.

To enable colour printing you need to have the *ColorDevice entry in the PPD
set to true, otherwise the driver will generate greyscale.

Note that you need not set printer=on in the [wine] section of wine.conf, this
enables printing via external printer drivers and does not affect wineps.

If you're lucky you should now be able to produce PS files from Wine!

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.

TODO / Bugs
-----------

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 hp4m6_v1.ppd file.

No TrueType download.

StretchDIBits uses level 2 PostScript.

AdvancedSetup dialog box.

Many partially implemented functions.

ps.c is becoming messy.

Notepad often starts text too far to the left depending on the margin
settings. However the win3.1 pscript.drv (under wine) also does this.

Probably many more...

Please contact me if you want to help so that we can avoid duplication.

Huw Davies <h.davies1@physics.ox.ac.uk>
