Various registry-related PostScript driver enhancements.
This commit is contained in:
parent
9d4ae0eff9
commit
744820d014
|
@ -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@
|
||||||
|
|
|
@ -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 \
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 = <file with metrics>
|
||||||
<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 = <integer value>
|
||||||
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 = <integer value>
|
||||||
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:
|
||||||
|
|
|
@ -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>
|
||||||
<../../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 < ~/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<n>" = "/unix/path/name/filename.afm"
|
"dir<n>" = "/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:
|
||||||
|
|
|
@ -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"=""
|
||||||
|
|
|
@ -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 *** -->
|
||||||
|
|
|
@ -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;
|
||||||
<!--
|
|
||||||
®istry;
|
|
||||||
&fonts;
|
|
||||||
&printing;
|
|
||||||
-->
|
|
||||||
|
|
||||||
</book>
|
</book>
|
||||||
|
|
Loading…
Reference in New Issue