Mega Code Archive

 
Categories / Delphi / Printing
 

Check if a printer supports postscript

Title: Check if a printer supports postscript? { That is really difficult do to if it has to work on all Windows platforms. The best way (no kidding) may be to ask the user which printer to use. What platforms do you need to support? If it is only Win2K (and perhaps XP) one may be able to use this (i have no postscript-enabled printer around to see if it works!): } uses WinSpool, Printers; {: Check if the currently selected printer supports postscript. Only applicable on Win2K/XP! } function PrinterSupportsPostscript: Boolean; const POSTSCRIPT_PASSTHROUGH = 4115; POSTSCRIPT_IDENTIFY = 4117; Escapes: array[0..2] of Cardinal = (POSTSCRIPT_DATA, POSTSCRIPT_IDENTIFY, POSTSCRIPT_PASSTHROUGH); var res: Integer; i: Integer; begin Result := false; for i := Low(Escapes) to High(Escapes) do begin res := ExtEscape(printer.Handle, QUERYESCSUPPORT, sizeof(Escapes[0]), @Escapes[i], 0, nil); if res 0 then begin Result := true; Break; end; end; end; procedure TForm1.Button1Click(Sender: TObject); const boolstr: array[Boolean] of string = (' not', ''); var i: Integer; S: string; begin for i := 0 to Printer.Printers.Count - 1 do begin Printer.PrinterIndex := i; memo1.Lines.add( Format('Printer %s does%s support Postscript', [printer.printers[printer.printerindex], boolstr[PrinterSupportsPostscript]])); end; end;