begin process at 2010 02 10 12:06:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

[D7] Créer un postScript depuis une imprimante lambda


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[D7] Créer un postScript depuis une imprimante lambda

mercredi 19 novembre 2008 à 10:20:27 | [D7] Créer un postScript depuis une imprimante lambda

nitrique

Bonjour à tous,

Je cherche à créer un Fichier postScript valide qui pourra être distillé avec GhostScript.
Donc, je pend un fichier (Word, par exemple), je fait "Imprimer dans un fichier", et ça me fait un fichier PRN que je renomme en PS, et ça fonctionne très bien.
... Enfin, sur quelques imprimantes seulement. :-(

En effet, certaines imprimantes n'ont pas l'air de savoir faire du PostScript standard, ça doit être un format propriétaire ou un truc comme ça.
Et je ne veux pas installer d'imprimante PDF virtuelle (enfin, je ne veux pas de procédure d'installation, tout gérer par le code).

J'ai donc été chercher le driver de l'imprimante PDF Adobe (ADIST5.PPD), et j'aimerais savoir comment soit:

- Créer par le code une imprimante virtuelle s'appuyant sur ce driver.
- Prendre une imprimante déjà installée et la faire pointer temporairement sur ce driver.
- Savoir générer un postScript standard avec une imprimante lambda.

Je cherche depuis un bout de temps et j'ai eu des pistes, genre:

New(pDriverInfo); // Neu Struktur erstellen
pDriverInfo^.pDataFile := PCHar(DataFile); // On peut mettre un fichier ppd ici

Ou alors

http://support.microsoft.com/kb/142057/fr
(Je n'arrive pas à le mettre en application... )

Mais ce sont des types d'instructions que je n'ai pas l'habitude de manipuler... Je ne sais pas si ça peut vraiment résoudre mon pb.

Pouvez vous m'aider ?

Merci d'avance.
mercredi 19 novembre 2008 à 15:28:18 | Re : [D7] Créer un postScript depuis une imprimante lambda

nitrique

Bon, j'arrive à récupérer le fichier PPD pour chacune de mes imprimantes installées sur mon poste:

function SetPrinterOptions(NewFilePPD: String=''): String;
var ret: String;
  passe: Boolean;
  DeviceMode, hPrinter: THandle;
  Device, Driver, Port: array[0..MAX_PATH] of Char;
  DriverInfo2: PDriverInfo2;
  DriverInfo2Size: DWORD;
begin
  passe := False;
  ret := '';
  Printer.GetPrinter(Device, Driver, Port, DeviceMode);
  OpenPrinter(Device, hPrinter, nil);
  try
    GetPrinterDriver(hPrinter, nil, 2, nil, 0, DriverInfo2Size);
    GetMem(DriverInfo2, DriverInfo2Size);
    try
      GetPrinterDriver(hPrinter, nil, 2, DriverInfo2, DriverInfo2Size, DriverInfo2Size);
      //StrPCopy(Driver, ExtractFileName(StrPas(DriverInfo2^.PDriverPath)));
      ret := DriverInfo2^.pName+': '+#09+DriverInfo2^.pDataFile;
      if (Trim(NewFilePPD)<>'') and (FileExists(NewFilePPD)) then begin // Réaffecter le driver (RIEN NE MARCHE...)
        //StrPCopy(DriverInfo2^.PDriverPath, NewFilePPD);
        //DriverInfo2^.PDriverPath := PChar(NewFilePPD);
        //StrPCopy(Driver, StrPas(DriverInfo2^.PDriverPath));
        //StrPCopy(Driver, NewFilePPD);
        passe := True;
      end;
    finally
      FreeMem(DriverInfo2, DriverInfo2Size);
    end;
  finally
    ClosePrinter(hPrinter);
  end;
  if passe then
    Printer.SetPrinter(Device, Driver, Port, DeviceMode);
  Result := ret;
end;
 
procedure TForm1.btnGetImpClick(Sender: TObject);
var i, tmp: Integer;
  strTmp: String;
begin
  strTmp := '';
  Printer.Refresh;
  tmp := Printer.PrinterIndex;
  for i:=0 to Printer.Printers.Count-1 do begin
    Printer.PrinterIndex := i;
    strTmp := strTmp+sLineBreak+SetPrinterOptions();
  end;
  Printer.PrinterIndex := tmp;
  ShowMessage(strTmp);
end;
 
procedure TForm1.btnSetImpClick(Sender: TObject);
var strTmp: String;
begin
  strTmp := 'C:\WINNT\system32\spool\DRIVERS\W32X86\3\ADIST5.PPD';
  SetPrinterOptions(strTmp); // Ne fonctionne pas
  ShowMessage('Driver changé: '+IntToStr(Printer.PrinterIndex));
end;

Mais je n'arrive pas à le changer... Le SetPrinter ne prend pas en paramètre le DriverInfo2 qui contient l'info...

Avez vous une piste ?


Cette discussion est classée dans : fichier, imprimante, créer, postscript, lambda


Répondre à ce message

Sujets en rapport avec ce message

fichier db sans db ? [ par barbulille ] voila, j'ai besoin de créer une base de données mais mon application fonctionnera sous linux & windows donc je voudrais créer cette base de données sa Problème fichier INI [ par TiDaN326 ] Bonjour à tous :)Bon je me sert de la fonction pour créer/lire des fichiers INI... jusque là, tout va bien, mais comment je fait pour créer le fichier Créer une visionneuse de fichier quickreport... [ par orelien ] Bonjour,J'aimerais créer une visionneuse de fichier quickreport.Le fichier exe se présentera comme "adobe acrobat" et je souhaiterais que le fichier " Comment créer correctement un fichier de ressource ? [ par rguef ] Je cherche à créer un fichier de ressource externe. Je n'y arrive plus ! Windows me met comme message "L'application ou la DLL 'XXXXXXXXXXXX' n'est pa fichier .res [ par cricri_b34 ] j'ai créer trois image bmp que j'aimerais mettre dans un fichier .res , mais le pb c que lorsque j'essaie d'ouvrir un image on me dit que celle ci me Créer une imprimante virtuelle ? [ par locas ] Bonjour, Je souhaiterais créer une imprimante virtuelle afin de pouvoir analyser le texte du document à imprimer. Je n'ai pas trouvé de tuto ou d'ex Créer et uiliser une ressource de fichiers text [ par yvessimon ] Bonjour,Je souhaite créer une ressource d'un fichier text.Questions: commant créer cette resource. comment  lire ce fichier text dans le programme, po Delphi: Base de données [ par jdudoret ] Bonjour,J'ai créer une table sous Excel 2000 avec des données texte et images.Pas de problèmes pour afficher du texte dans des DBText  .. par les tabl comment peut on créer un fichier pdf en delphi? [ par poulcra2 ] developper une application en delphi permettant de gérer une médiathèque cotenant des documents audio et pdf?mon adresse : poulcris@yahoo.fr Comment capturer et créer un fichier son à partir du microphone? [ par BEM ] Comment capturer et créer un fichier son à partir du microphone?Je suis en train de concevoir une application pour automatiser les examens d'audiométr


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales