How To Determine Whether a Printer Is a PostScript Printer

This article was previously published under Q264036
This article has been archived. It is offered "as is" and will no longer be updated.
It is necessary sometimes to determine whether or not a printer is a PostScript printer, so that an application can determine whether or not it can safely send raw PostScript data to the printer. The code in this article demonstrates one way to make this determination.
The code first tests for support of the POSTSCRIPT_PASSTHROUGH printer escape function, assuming that if the escape function is supported then the printer must be a PostScript printer. If the printer does not support the escape function, the second half of the code uses the GETTECHNOLOGY escape function to determine whether the technology string contains the text "postscript". If the driver doesn't support the escape, it is assumed that it is not a PostScript printer.
BOOL IsDCPostscript( HDC hDC ){	int		nEscapeCode;	TCHAR	szTechnology[MAX_PATH] = TEXT("");	// If it supports POSTSCRIPT_PASSTHROUGH, it must be PS.	nEscapeCode = POSTSCRIPT_PASSTHROUGH;	if( ExtEscape( hDC, QUERYESCSUPPORT, sizeof(int), (LPCSTR)&nEscapeCode, 0, NULL ) > 0 )		return TRUE;<BR/>	// If it doesn't support GETTECHNOLOGY, we won't be able to tell.	nEscapeCode = GETTECHNOLOGY;	if( ExtEscape( hDC, QUERYESCSUPPORT, sizeof(int), (LPCSTR)&nEscapeCode, 0, NULL ) <= 0 )		return FALSE;<BR/>	// Get the technology string and check to see if the word "postscript" is in it.	if( ExtEscape( hDC, GETTECHNOLOGY, 0, NULL, MAX_PATH, (LPSTR)szTechnology ) <= 0 )		return FALSE;	strupr( szTechnology );	if( strstr( szTechnology, "POSTSCRIPT" ) == NULL )		return FALSE;<BR/>	// The word "postscript" was not found and it didn't support 	//   POSTSCRIPT_PASSTHROUGH, so it's not a PS printer.	return FALSE;}				
postscript ps raw data printer queue direct determine support

Article ID: 264036 - Last Review: 12/05/2015 20:27:38 - Revision: 1.5

Microsoft Win32 Software Development Kit (SDK) 4.0, Microsoft Windows 98 Standard Edition, Microsoft Windows 95, Microsoft Windows NT Server 4.0 Standard Edition, Microsoft Windows NT Workstation 4.0 Developer Edition

  • kbnosurvey kbarchive kbdswgdi2003swept kbgdi kbhowto kbprint KB264036