Get full path of argv[0] before we change directories.
[wine.git] / documentation / psdriver
blobab2098605c4600ab23d2678d0a7992cc582841f2
1 Wine PostScript Driver
2 ======================
4 When complete this will allow Wine to generate PostScript files without needing
5 an external printer driver. It should be possible to print to a non PostScript
6 printer by filtering the output through ghostscript.
9 Installation
10 ------------
12 The driver behaves as if it were a DRV file called WINEPS.DRV which at the
13 moment is built into Wine.  Although it mimics a 16 bit driver it will work
14 with both 16 and 32 bit apps, just as win9x drivers do.
16 To install it add
18 Wine PostScript Driver=WINEPS,LPT1:
20 to the [devices] section of win.ini and to set it as the default printer also
21 add
23 device=Wine PostScript Driver,WINEPS,LPT1:
25 to the [windows] section of win.ini and
28 To run 32 bit apps (and 16 bit apps using the builtin commdlg) you also need to
29 add certain entries to the registry.  The easiest way to do that at the moment
30 is to use the winelib program programs/regapi/regapi with the file
31 documentation/psdrv.reg .  To do this cd to programs/regapi/regapi and type
32 `make' to actually make the program, then type
33 `./regapi setValue <../../documentation/psdrv.reg' .  You can obviously edit
34 psdrv.reg to suit your requirements.
36 You will need Adobe Font Metric (AFM) files for the (type 1 PostScript) fonts
37 that you wish to use. You can get these from
38 ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles .  The directories base17
39 or base35 are good places to start.  Note that these are only the font metrics
40 and not the fonts themselves. At the moment the driver does not download
41 additional fonts, so you can only use fonts that are already present on the
42 printer.
44 Then create a [afmfiles] section in your wine.conf (or ~/.winerc) and add a
45 line of the form
47 file<n>=/unix/path/name/filename.afm
49 for each AFM file that you wish to use. [This might change in the future]
51 You also require a PPD file for your printer.  This describes certain
52 characteristics of the printer such as which fonts are installed, how to select
53 manual feed etc.  Adobe also has many of these on its website, have a look in
54 ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/
55 Create a [psdrv] section in your wine.conf (or ~/.winerc) and add the 
56 following entry:
58 ppdfile=/somewhere/file.ppd
60 By default, the driver will look for a file named default.ppd in the directory
61 from which you started wine.
63 To enable colour printing you need to have the *ColorDevice entry in the PPD
64 set to true, otherwise the driver will generate greyscale.
66 Note that you need not set printer=on in the [wine] section of wine.conf, this
67 enables printing via external printer drivers and does not affect wineps.
69 If you're lucky you should now be able to produce PS files from Wine!
71 I've tested it with win3.1 notepad/write, Winword6 and Origin4.0 and 32 bit
72 apps such as win98 wordpad, Winword97, Powerpoint2000 with some degree of
73 success - you should be able to get something out, it may not be in the right
74 place.
76 If you don't have a PostScript printer here is a short additional description 
77 how to get the Wine PostScript Driver running with ghostscript. I had some 
78 success with ghostscript 5.10 from the SuSE 6.2 distribution. My ghostscript 
79 package contains some AFM files in the directory /usr/share/ghostscript/fonts.
80 I have used these for the [afmfiles] section in my wine.conf (or ~/.winerc) 
81 file.
83 There are also two PPD file in my ghostscript package. They are located in the
84 directory /usr/share/ghostscript/5.10. I have used the file cbjc600.ppd because
85 of the supported papersize. Because my PPD file needed some changes i have 
86 copyed it to /usr/local/etc/gs.ppd and enterd it into the [psdrv] section in 
87 my wine.conf (or ~/.winerc) file.
89 When i started wine after this settings i got an error when wine tried to pars 
90 the PPD file. There was the ':' missing in the line:
92         *CloseUI: *PrintColors
94 After this fix the PPD file was successfull parsed, but printing was still not 
95 possible. The reason is that the PPD file contains no font information. To 
96 create the font information I run wine with -debugmsg +font and redirected the
97 output into a file. Than I filterd the file for lines containing 'FontName'
98 using the grep command and extracted the names of the fonts with the cut 
99 command into a new file.
101         grep FontName LOGFILE | cut -f 2 -d\' | sort -u > add.ppd
103 Now '*Font ' needs to be inserted at the beginning of each line of the new 
104 file. The end of each line needs to become ': Standard'. The last step is to
105 add these line to the PPD file. After this I was able to print some text using 
106 wines buildin PostScript driver and ghostscript.
109 TODO / Bugs
110 -----------
112 Driver does read PPD files, but ignores all constraints and doesn't let you
113 specify whether you have optional extras such as envelope feeders. You will
114 therefore find a larger than normal selection of input bins in the print setup
115 dialog box. I've only really tested ppd parsing on the hp4m6_v1.ppd file.
117 No TrueType download.
119 StretchDIBits uses level 2 PostScript.
121 AdvancedSetup dialog box.
123 Many partially implemented functions.
125 ps.c is becoming messy.
127 Notepad often starts text too far to the left depending on the margin
128 settings. However the win3.1 pscript.drv (under wine) also does this.
130 Probably many more...
132 Please contact me if you want to help so that we can avoid duplication.
134 Huw Davies <h.davies1@physics.ox.ac.uk>