Various registry-related PostScript driver enhancements.

This commit is contained in:
Ian Pilcher 2001-04-02 19:14:41 +00:00 committed by Alexandre Julliard
parent 9d4ae0eff9
commit 744820d014
12 changed files with 256 additions and 90 deletions

View File

@ -456,7 +456,7 @@ version/libversion.@LIBEXT@: liblz32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIB
win32s/libw32skrnl.@LIBEXT@: libkernel32.@LIBEXT@ libntdll.@LIBEXT@ win32s/libw32skrnl.@LIBEXT@: libkernel32.@LIBEXT@ libntdll.@LIBEXT@
winaspi/libwnaspi32.@LIBEXT@: libadvapi32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@ winaspi/libwnaspi32.@LIBEXT@: libadvapi32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@
winedos/libwinedos.@LIBEXT@: libuser32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@ winedos/libwinedos.@LIBEXT@: libuser32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@
wineps/libwineps.@LIBEXT@: libuser32.@LIBEXT@ libgdi32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@ wineps/libwineps.@LIBEXT@: libuser32.@LIBEXT@ libgdi32.@LIBEXT@ libwinspool.drv.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@
wininet/libwininet.@LIBEXT@: libshlwapi.@LIBEXT@ libuser32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@ wininet/libwininet.@LIBEXT@: libshlwapi.@LIBEXT@ libuser32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@
winmm/joystick/libjoystick.drv.@LIBEXT@: libwinmm.@LIBEXT@ libuser32.@LIBEXT@ libntdll.@LIBEXT@ winmm/joystick/libjoystick.drv.@LIBEXT@: libwinmm.@LIBEXT@ libuser32.@LIBEXT@ libntdll.@LIBEXT@
winmm/libwinmm.@LIBEXT@: libuser32.@LIBEXT@ libadvapi32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@ winmm/libwinmm.@LIBEXT@: libuser32.@LIBEXT@ libadvapi32.@LIBEXT@ libkernel32.@LIBEXT@ libntdll.@LIBEXT@

View File

@ -5,7 +5,7 @@ VPATH = @srcdir@
MODULE = wineps MODULE = wineps
SOVERSION = 1.0 SOVERSION = 1.0
ALTNAMES = wineps16 ALTNAMES = wineps16
IMPORTS = user32 gdi32 kernel32 ntdll IMPORTS = user32 gdi32 winspool.drv kernel32 ntdll
C_SRCS = \ C_SRCS = \
afm.c \ afm.c \

View File

@ -74,6 +74,29 @@ HFONT16 PSDRV_FONT_SelectObject( DC * dc, HFONT16 hfont,
} }
} }
if (physDev->pi->FontSubTableSize != 0)
{
DWORD i;
for (i = 0; i < physDev->pi->FontSubTableSize; ++i)
{
if (!strcasecmp (FaceName,
physDev->pi->FontSubTable[i].pValueName))
{
TRACE ("substituting facename '%s' for '%s'\n",
(LPSTR) physDev->pi->FontSubTable[i].pData, FaceName);
if (strlen ((LPSTR) physDev->pi->FontSubTable[i].pData) <
LF_FACESIZE)
strcpy (FaceName,
(LPSTR) physDev->pi->FontSubTable[i].pData);
else
WARN ("Facename '%s' is too long; ignoring substitution\n",
(LPSTR) physDev->pi->FontSubTable[i].pData);
break;
}
}
}
TRACE("Trying to find facename '%s'\n", FaceName); TRACE("Trying to find facename '%s'\n", FaceName);
/* Look for a matching font family */ /* Look for a matching font family */

View File

@ -416,18 +416,17 @@ static BOOL PSDRV_DeleteDC( DC *dc )
} }
/********************************************************************** /**********************************************************************
* PSDRV_FindPrinterInfo * PSDRV_FindPrinterInfo
*/ */
PRINTERINFO *PSDRV_FindPrinterInfo(LPCSTR name) PRINTERINFO *PSDRV_FindPrinterInfo(LPCSTR name)
{ {
static PRINTERINFO *PSDRV_PrinterList; static PRINTERINFO *PSDRV_PrinterList;
DWORD type = REG_BINARY, needed, res; DWORD type = REG_BINARY, needed, res, dwPaperSize;
PRINTERINFO *pi = PSDRV_PrinterList, **last = &PSDRV_PrinterList; PRINTERINFO *pi = PSDRV_PrinterList, **last = &PSDRV_PrinterList;
FONTNAME *font; FONTNAME *font;
AFM *afm; AFM *afm;
HANDLE hPrinter;
TRACE("'%s'\n", name); TRACE("'%s'\n", name);
@ -454,10 +453,134 @@ PRINTERINFO *PSDRV_FindPrinterInfo(LPCSTR name)
(LPBYTE)pi->Devmode, needed, &needed); (LPBYTE)pi->Devmode, needed, &needed);
} }
PROFILE_GetWineIniString("psdrv", "ppdfile", "default.ppd", if (OpenPrinterA (pi->FriendlyName, &hPrinter, NULL) == 0)
pi->Devmode->dmDrvPrivate.ppdFileName, 256); {
ERR ("OpenPrinterA failed with code %li\n", GetLastError ());
if (HeapFree (PSDRV_Heap, 0, pi->FriendlyName) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree (PSDRV_Heap, 0, pi->Devmode) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree (PSDRV_Heap, 0, pi) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
*last = NULL;
return NULL;
}
res = GetPrinterDataA (hPrinter, "PPD File", NULL,
pi->Devmode->dmDrvPrivate.ppdFileName, 256, &needed);
if (res != ERROR_SUCCESS)
{
ERR ("Error %li getting PPD file name for printer '%s'\n", res, name);
if (ClosePrinter (hPrinter) == 0)
WARN ("ClosePrinter failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
*last = NULL;
return NULL;
}
res = GetPrinterDataA (hPrinter, "Paper Size", NULL, (LPBYTE) &dwPaperSize,
sizeof (DWORD), &needed);
if (res == ERROR_SUCCESS)
pi->Devmode->dmPublic.u1.s1.dmPaperSize = (SHORT) dwPaperSize;
else if (res == ERROR_FILE_NOT_FOUND)
TRACE ("No 'Paper Size' for printer '%s'\n", name);
else
{
ERR ("GetPrinterDataA returned %li\n", res);
if (ClosePrinter (hPrinter) == 0)
WARN ("ClosePrinter failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
*last = NULL;
return NULL;
}
res = EnumPrinterDataExA (hPrinter, "PrinterDriverData\\FontSubTable", NULL,
0, &needed, &pi->FontSubTableSize);
if (res == ERROR_SUCCESS)
TRACE ("No 'FontSubTable' for printer '%s'\n", name);
else if (res == ERROR_MORE_DATA)
{
pi->FontSubTable = HeapAlloc (PSDRV_Heap, 0, needed);
if (pi->FontSubTable == NULL)
{
ERR ("Failed to allocate %li bytes from heap\n", needed);
if (ClosePrinter (hPrinter) == 0)
WARN ("ClosePrinter failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
*last = NULL;
return NULL;
}
res = EnumPrinterDataExA (hPrinter, "PrinterDriverData\\FontSubTable",
(LPBYTE) pi->FontSubTable, needed, &needed,
&pi->FontSubTableSize);
if (res != ERROR_SUCCESS)
{
ERR ("EnumPrinterDataExA returned %li\n", res);
if (ClosePrinter (hPrinter) == 0)
WARN ("ClosePrinter failed with code %li\n", GetLastError ());
if (HeapFree (PSDRV_Heap, 0, pi->FontSubTable) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
*last = NULL;
return NULL;
}
}
else /* error in 1st call to EnumPrinterDataExA */
{
ERR ("EnumPrinterDataExA returned %li\n", res);
if (ClosePrinter (hPrinter) == 0)
WARN ("ClosePrinter failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
*last = NULL;
return NULL;
}
if (ClosePrinter (hPrinter) == 0)
{
ERR ("ClosePrinter failed with code %li\n", GetLastError ());
if (ClosePrinter (hPrinter) == 0)
WARN ("ClosePrinter failed with code %li\n", GetLastError ());
if (HeapFree (PSDRV_Heap, 0, pi->FontSubTable) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
if (HeapFree(PSDRV_Heap, 0, pi) == 0)
WARN ("HeapFree failed with code %li\n", GetLastError ());
*last = NULL;
return NULL;
}
pi->ppd = PSDRV_ParsePPD(pi->Devmode->dmDrvPrivate.ppdFileName); pi->ppd = PSDRV_ParsePPD(pi->Devmode->dmDrvPrivate.ppdFileName);
if(!pi->ppd) { if(!pi->ppd) {
HeapFree(PSDRV_Heap, 0, pi->FontSubTable);
HeapFree(PSDRV_Heap, 0, pi->FriendlyName); HeapFree(PSDRV_Heap, 0, pi->FriendlyName);
HeapFree(PSDRV_Heap, 0, pi->Devmode); HeapFree(PSDRV_Heap, 0, pi->Devmode);
HeapFree(PSDRV_Heap, 0, pi); HeapFree(PSDRV_Heap, 0, pi);

View File

@ -12,6 +12,7 @@
#include "pen.h" #include "pen.h"
#include "brush.h" #include "brush.h"
#include "wine/wingdi16.h" #include "wine/wingdi16.h"
#include "winspool.h"
typedef struct { typedef struct {
float llx, lly, urx, ury; float llx, lly, urx, ury;
@ -163,11 +164,13 @@ numInstalledOptions of OPTIONs
} PSDRV_DEVMODEA; } PSDRV_DEVMODEA;
typedef struct _tagPI { typedef struct _tagPI {
char *FriendlyName; char *FriendlyName;
PPD *ppd; PPD *ppd;
PSDRV_DEVMODEA *Devmode; PSDRV_DEVMODEA *Devmode;
FONTFAMILY *Fonts; FONTFAMILY *Fonts;
struct _tagPI *next; PPRINTER_ENUM_VALUESA FontSubTable;
DWORD FontSubTableSize;
struct _tagPI *next;
} PRINTERINFO; } PRINTERINFO;
typedef struct { typedef struct {
@ -379,6 +382,7 @@ extern DWORD PSDRV_DeviceCapabilities(LPSTR lpszDriver, LPCSTR lpszDevice,
WORD fwCapability, LPSTR lpszOutput, WORD fwCapability, LPSTR lpszOutput,
LPDEVMODEA lpdm); LPDEVMODEA lpdm);
VOID PSDRV_DrawLine( DC *dc ); VOID PSDRV_DrawLine( DC *dc );
#endif #endif

View File

@ -5,6 +5,7 @@ rsrc rsrc.res
import user32.dll import user32.dll
import gdi32.dll import gdi32.dll
import winspool.drv
import kernel32.dll import kernel32.dll
import ntdll.dll import ntdll.dll

View File

@ -1850,6 +1850,10 @@ diff -u the_backup_file_you_made windows/x11drv/keyboard.c > layout.diff
Good luck. Good luck.
</para> </para>
</sect1> </sect1>
&fonts;
&printing;
</chapter> </chapter>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file

View File

@ -1,7 +1,7 @@
<chapter id="fonts"> <sect1 id="fonts">
<title>Dealing with Fonts</title> <title>Dealing with Fonts</title>
<sect1 id="windows-fonts"> <sect2 id="windows-fonts">
<title>Fonts</title> <title>Fonts</title>
<para> <para>
@ -23,7 +23,7 @@
</note> </note>
</para> </para>
<sect2> <sect3>
<title>How To Convert Windows Fonts</title> <title>How To Convert Windows Fonts</title>
<para> <para>
If you have access to a Windows installation you should use If you have access to a Windows installation you should use
@ -109,9 +109,9 @@ STUB: AddFontResource( SOMEFILE.FON )
However, there is a possibility of the native TrueType However, there is a possibility of the native TrueType
support via FreeType renderer in the future (hint, hint :-) support via FreeType renderer in the future (hint, hint :-)
</para> </para>
</sect2> </sect3>
<sect2> <sect3>
<title>How To Add Font Aliases To <filename>~/.wine/config</filename></title> <title>How To Add Font Aliases To <filename>~/.wine/config</filename></title>
<para> <para>
Many Windows applications assume that fonts included in Many Windows applications assume that fonts included in
@ -323,9 +323,9 @@ Default = -adobe-times-
<filename>../fonts/Type1</filename> and <filename>../fonts/Type1</filename> and
<filename>../fonts/Speedo</filename> directories. <filename>../fonts/Speedo</filename> directories.
</para> </para>
</sect2> </sect3>
<sect2> <sect3>
<title>How To Manage Cached Font Metrics</title> <title>How To Manage Cached Font Metrics</title>
<para> <para>
WINE stores detailed information about available fonts in WINE stores detailed information about available fonts in
@ -342,9 +342,9 @@ FontMetrics = &lt;file with metrics&gt;
<filename>~/.wine/.cachedmetrics</filename> with the new <filename>~/.wine/.cachedmetrics</filename> with the new
information. This process can take a while. information. This process can take a while.
</para> </para>
</sect2> </sect3>
<sect2> <sect3>
<title>Too Small Or Too Large Fonts</title> <title>Too Small Or Too Large Fonts</title>
<para> <para>
Windows programs may ask WINE to render a font with the Windows programs may ask WINE to render a font with the
@ -363,9 +363,9 @@ Resolution = &lt;integer value&gt;
experiment with values in the 60 - 120 range. 96 is a good experiment with values in the 60 - 120 range. 96 is a good
starting point. starting point.
</para> </para>
</sect2> </sect3>
<sect2> <sect3>
<title>"FONT_Init: failed to load ..." Messages On Startup</title> <title>"FONT_Init: failed to load ..." Messages On Startup</title>
<para> <para>
The most likely cause is a broken The most likely cause is a broken
@ -376,10 +376,10 @@ Resolution = &lt;integer value&gt;
machine as you are not root, use <command>xset -fp machine as you are not root, use <command>xset -fp
xxx</command> to remove the broken font path. xxx</command> to remove the broken font path.
</para> </para>
</sect2> </sect3>
</sect1> </sect2>
<sect1 id="ttfont-server"> <sect2 id="ttfont-server">
<title>Setting up a TrueType Font Server</title> <title>Setting up a TrueType Font Server</title>
<para> <para>
written by ??? written by ???
@ -486,9 +486,9 @@ FontPath "tcp/localhost:7100"
<para> <para>
Hope this helps... Hope this helps...
</para> </para>
</sect1> </sect2>
</chapter> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@ -1,8 +1,8 @@
<chapter id="printing"> <sect1 id="printing">
<title>Printing in Wine</title> <title>Printing in Wine</title>
<para>How to print documents in Wine...</para> <para>How to print documents in Wine...</para>
<sect1 id="wine-printing"> <sect2 id="wine-printing">
<title>Printing</title> <title>Printing</title>
<para> <para>
@ -33,7 +33,7 @@
their Windows printer drivers. It is unclear whether they ever will. their Windows printer drivers. It is unclear whether they ever will.
</para> </para>
<sect2> <sect3>
<title>External printer drivers</title> <title>External printer drivers</title>
<para> <para>
At present only 16 bit drivers will work (note that these include win9x At present only 16 bit drivers will work (note that these include win9x
@ -55,19 +55,18 @@ printer=on
to the [TrueType] section of <filename>~/.wine/config</filename>. The code for to the [TrueType] section of <filename>~/.wine/config</filename>. The code for
the driver interface is in <filename>graphics/win16drv</filename>. the driver interface is in <filename>graphics/win16drv</filename>.
</para> </para>
</sect2> </sect3>
<sect2> <sect3>
<title>Builtin Wine PostScript driver</title> <title>Builtin Wine PostScript driver</title>
<para> <para>
Enables printing of PostScript files via a driver built into Wine. See Enables printing of PostScript files via a driver built into Wine. See
<filename>documentation/psdriver</filename> for installation below for installation instructions. The code for the PostScript
instructions. The code for the PostScript driver is in driver is in <filename>graphics/psdrv</filename>.
<filename>graphics/psdrv</filename>.
</para> </para>
</sect2> </sect3>
<sect2> <sect3>
<title>Spooling</title> <title>Spooling</title>
<para> <para>
Spooling is rather primitive. The [spooler] section of Spooling is rather primitive. The [spooler] section of
@ -85,10 +84,10 @@ printer=on
with that port's name e.g. for <systemitem>LPT3:</systemitem> a file with that port's name e.g. for <systemitem>LPT3:</systemitem> a file
called <systemitem>LPT3:</systemitem> would be created. called <systemitem>LPT3:</systemitem> would be created.
</para> </para>
</sect2> </sect3>
</sect1> </sect2>
<sect1 id="psdriver"> <sect2 id="psdriver">
<title>The Wine PostScript Driver</title> <title>The Wine PostScript Driver</title>
<para> <para>
@ -104,7 +103,7 @@ printer=on
non PostScript printer by filtering the output through ghostscript. non PostScript printer by filtering the output through ghostscript.
</para> </para>
<sect2> <sect3>
<title>Installation</title> <title>Installation</title>
<para> <para>
The driver behaves as if it were a DRV file called The driver behaves as if it were a DRV file called
@ -136,16 +135,34 @@ printer=on
<emphasis>[sic]</emphasis> <emphasis>[sic]</emphasis>
</para> </para>
<para> <para>
To run 32 bit apps (and 16 bit apps using the You also need to add certain entries to the registry. The easiest way
<literal>builtin</literal> commdlg) you also need to add certain to do this is to customise the contents of
entries to the registry. The easiest way to do that at the moment is <filename>documentation/psdrv.reg</filename> (see below) and use the
to use the winelib program <command>programs/regapi/regapi</command> Winelib program <command>programs/regapi/regapi</command>. For
with the file <filename>documentation/psdrv.reg</filename>. To do this example, if you have installed the Wine source tree in
<command>cd</command> to <filename>programs/regapi/regapi</filename> <filename>/usr/src/wine</filename>, you could use the following
and type <userinput>make</userinput> to actually make the program, then series of commands:
type <userinput>./regapi setValue <itemizedlist>
&lt;../../documentation/psdrv.reg</userinput>. You can obviously <listitem>
edit <filename>psdrv.reg</filename> to suit your requirements. <para>
<userinput>cp /usr/src/wine/documentation/psdrv.reg ~</userinput>
</para>
</listitem>
<listitem>
<para><userinput>vi ~/psdrv.reg</userinput></para>
</listitem>
<listitem>
<para>
Edit the copy of <filename>psdrv.reg</filename> to suit your
requirements. At a minimum, you must specify a PPD file for
each printer.
</para>
</listitem>
<para>
<userinput>regapi setValue &lt; ~/psdrv.reg</userinput>
</para>
</listitem>
</itemizedlist>
</para> </para>
<para> <para>
You will need Adobe Font Metric (AFM) files for the (type 1 PostScript) You will need Adobe Font Metric (AFM) files for the (type 1 PostScript)
@ -156,35 +173,33 @@ printer=on
are good places to start. Note that these are only the font metrics and 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 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 additional fonts, so you can only use fonts that are already present on
the printer. the printer. (Actually, the driver can use any font that is listed in
the PPD file, for which it has an AFM file. If you use fonts that are
<emphasis>not</emphasis> installed in your printer, or in
Ghostscript, you will need to use some means of embedding the font in
the print job or downloading the font to the printer. Note also that
the driver does not yet properly list required fonts in its DSC
comments, so a print manager that depends on these comments to
download the proper fonts to the printer may not work properly.)
</para> </para>
<para> <para>
Then create a [afmfiles] section in your Then create a [afmdirs] section in your
<filename>wine.conf</filename> (or <filename>wine.conf</filename> (or
<filename>~/.wine/config</filename>) and add a line of the form <filename>~/.wine/config</filename>) and add a line of the form
</para> </para>
<screen> <screen>
"file&lt;n&gt;" = "/unix/path/name/filename.afm" "dir&lt;n&gt;" = "/unix/path/name/"
</screen> </screen>
<para> <para>
for each AFM file that you wish to use. [This might change in the future] for each directory that contains AFM files you wish to use.
</para> </para>
<para> <para>
You also require a PPD file for your printer. This describes certain You also require a PPD file for your printer. This describes certain
characteristics of the printer such as which fonts are installed, how 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, 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/"> 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 ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/</ulink>. See
a [psdrv] section in your <filename>wine.conf</filename> (or above for information on configuring the driver to use this file.
<filename>~/.wine/config</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>
<para> <para>
To enable colour printing you need to have the To enable colour printing you need to have the
@ -196,7 +211,7 @@ printer=on
Note that you need not set <literal>printer=on</literal> in Note that you need not set <literal>printer=on</literal> in
the [wine] section of <filename>wine.conf</filename>, this the [wine] section of <filename>wine.conf</filename>, this
enables printing via external printer drivers and does not enables printing via external printer drivers and does not
affect wineps. affect the builtin PostScript driver.
</para> </para>
<para> <para>
If you're lucky you should now be able to produce PS files If you're lucky you should now be able to produce PS files
@ -208,9 +223,9 @@ printer=on
Powerpoint2000 with some degree of success - you should be Powerpoint2000 with some degree of success - you should be
able to get something out, it may not be in the right place. able to get something out, it may not be in the right place.
</para> </para>
</sect2> </sect3>
<sect2> <sect3>
<title>TODO / Bugs</title> <title>TODO / Bugs</title>
<itemizedlist> <itemizedlist>
@ -258,9 +273,9 @@ printer=on
<para> <para>
&name-huw-davies; <email>&email-huw-davies;</email> &name-huw-davies; <email>&email-huw-davies;</email>
</para> </para>
</sect2> </sect3>
</sect1> </sect2>
</chapter> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@ -10,6 +10,15 @@
"Status"="dword:00000000" "Status"="dword:00000000"
"Until Time"="dword:00000000" "Until Time"="dword:00000000"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\Wine PostScript Driver\PrinterDriverData]
"PPD File"="/unix/path/to/PPD/file"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\Wine PostScript Driver\PrinterDriverData\FontSubTable]
"Courier New"="Courier"
"Arial"="Helvetica"
"Helv"="Helvetica"
"Times New Roman"="Times"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Environments\Windows 4.0\Drivers\PS Driver] [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Environments\Windows 4.0\Drivers\PS Driver]
"Configuration File"="WINEPS.DRV" "Configuration File"="WINEPS.DRV"
"Data File"="" "Data File"=""

View File

@ -10,12 +10,10 @@
<!entity installing SYSTEM "installing.sgml"> <!entity installing SYSTEM "installing.sgml">
<!entity configuring SYSTEM "configuring.sgml"> <!entity configuring SYSTEM "configuring.sgml">
<!entity registry SYSTEM "registry.sgml"> <!entity registry SYSTEM "registry.sgml">
<!entity running SYSTEM "running.sgml">
<!entity bugs SYSTEM "bugs.sgml">
<!-- *** Not currently used (???) *** -->
<!entity fonts SYSTEM "fonts.sgml"> <!entity fonts SYSTEM "fonts.sgml">
<!entity printing SYSTEM "printing.sgml"> <!entity printing SYSTEM "printing.sgml">
<!entity running SYSTEM "running.sgml">
<!entity bugs SYSTEM "bugs.sgml">
<!-- *** Entities for Wine Developer Guide *** --> <!-- *** Entities for Wine Developer Guide *** -->
<!entity compiling SYSTEM "compiling.sgml"> <!entity compiling SYSTEM "compiling.sgml">
@ -79,10 +77,6 @@
&configuring; &configuring;
&running; &running;
&bugs; &bugs;
<!--
&fonts;
&printing;
-->
</book> </book>
<!-- *** Wine Developer Guide *** --> <!-- *** Wine Developer Guide *** -->

View File

@ -8,13 +8,11 @@
<!entity getting SYSTEM "getting.sgml"> <!entity getting SYSTEM "getting.sgml">
<!entity installing SYSTEM "installing.sgml"> <!entity installing SYSTEM "installing.sgml">
<!entity configuring SYSTEM "configuring.sgml"> <!entity configuring SYSTEM "configuring.sgml">
<!entity running SYSTEM "running.sgml">
<!entity bugs SYSTEM "bugs.sgml">
<!-- *** Not currently used *** -->
<!entity registry SYSTEM "registry.sgml"> <!entity registry SYSTEM "registry.sgml">
<!entity fonts SYSTEM "fonts.sgml"> <!entity fonts SYSTEM "fonts.sgml">
<!entity printing SYSTEM "printing.sgml"> <!entity printing SYSTEM "printing.sgml">
<!entity running SYSTEM "running.sgml">
<!entity bugs SYSTEM "bugs.sgml">
]> ]>
<book id="index"> <book id="index">
@ -29,10 +27,5 @@
&configuring; &configuring;
&running; &running;
&bugs; &bugs;
<!--
&registry;
&fonts;
&printing;
-->
</book> </book>