How To Determine Whether a Printer Is a PostScript Printer

Article translations Article translations
Article ID: 264036 - View products that this article applies to.
This article was previously published under Q264036
Expand all | Collapse all

SUMMARY

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.

MORE INFORMATION

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;
}
				

Properties

Article ID: 264036 - Last Review: January 27, 2007 - Revision: 1.5
APPLIES TO
  • 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
Keywords: 
kbdswgdi2003swept kbgdi kbhowto kbprint KB264036

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com