Главная страница | назад





Article #15914: Determining if a given printer is capable of printing a PostScript file

 Question and Answer Database

FAQ914D.txt - Determining if a given printer is capable of printing a PostScript file

Category   :Printing
Platform   :All-32Bit
Product    :

Question:
Q) How can I determine if a given printer is capable of printing a
PostScript file?

Answer:
A) The following code demonstrates how to determine if a given printer
supports the Adobe PostScript page description language.

Example:

uses Printers;

function IsPostScriptPrinter(dc : hdc) : bool;
var
  TestInt : integer;
  a : array[0..255] of char;
  err : integer;
  s : string;
begin
  Result := false;
  TestInt := GETTECHNOLOGY;
 {$IFDEF WIN32}
  if ExtEscape(Dc,
               QUERYESCSUPPORT,
               sizeof(TestInt),
               @TestInt,
               0,
               Nil) > 0 then begin
     Err := ExtEscape(Dc,
                      GETTECHNOLOGY,
                      0,
                      nil,
                      256,
                      @a);
 {$ELSE}
  if Escape(Dc,
            QUERYESCSUPPORT,
            sizeof(TestInt),
            @TestInt,
            Nil) > 0 then begin
     Err := Escape(Dc,
                   GetTechnology,
                   0,
                   nil,
                   @a);
  {$ENDIF}
     if Err > 0 then begin
       s := UpperCase(StrPas(a));
       if Pos('POSTSCRIPT', s) > 0  then
         result := true;
     end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if PrintDialog1.Execute then
    if IsPostScriptPrinter(Printer.Handle) then
      ShowMessage('This is a Postscript Printer') else
      ShowMessage('This is not a Postscript Printer');
end;

4/2/99 11:21:29 AM
 

Last Modified: 01-SEP-99