BlueGEEK Journal

Accueil > Manip’s > Delphi > Imprimer > Détourner l’impression vers Adobe PDF

Détourner l’impression vers Adobe PDF

mercredi 1er août 2012, par bluegyn_spip

Pour imprimer un PDF à partir de n’importe quel traitement de texte.
Il suffit de détourner temporairement l’impression vers l’imprimante virtuelle ADOBE (si Adobe PDF est installé)

SetDefaultPrinter(’Adobe PDF’) ;

Voir procédure SetDefaultPrinter


Mémoriser l’imprimante par défaut

DEFAULT_PRINTER := Printer.Printers[Printer.PrinterIndex] ;

Restituer l’imprimante Oroginale

SetDefaultPrinter( DEFAULT_PRINTER ) ;

procedure SetDefaultPrinter(PrinterName: String) ;
var
   j: Integer;
   Device : PChar;
   Driver : Pchar;
   Port : Pchar;
   HdeviceMode: Thandle;
   aPrinter : TPrinter;
begin
  Printer.PrinterIndex := -1;
  getmem(Device, 255) ;
  getmem(Driver, 255) ;
  getmem(Port, 255) ;
  aPrinter := TPrinter.create;
  for j := 0 to Printer.printers.Count-1 do
  begin
    if Printer.printers[j] = PrinterName then
    begin
      aprinter.printerindex := j;
      aPrinter.getprinter
(device, driver, port, HdeviceMode) ;
      StrCat(Device, ',') ;
      StrCat(Device, Driver ) ;
      StrCat(Device, Port ) ;
      WriteProfileString('windows', 'device', Device) ;
      StrCopy( Device, 'windows' ) ;
      SendMessage(HWND_BROADCAST, WM_WININICHANGE,
0, Longint(@Device)) ;
   end;
  end;
  Freemem(Device, 255) ;
  Freemem(Driver, 255) ;
  Freemem(Port, 255) ;
  aPrinter.Free;
end;