home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0925.lha / DonsGenies / FrenchGenies.lha / Rexx / ImprimeAvecPost.pprx < prev    next >
Text File  |  1993-08-03  |  5KB  |  143 lines

  1. /*
  2. @BImprimeAvecPost @P @I Ecrit et ⌐ par Don Cox  
  3. @IN'est pas du Domaine Publique. Tous Droits RΘservΘs.
  4. Traduit et amΘliorΘ par Fabien Larini le 1/08/93.
  5.     
  6. Ce GΘnies permet d'imprimer le document α l'aide de l'interprΘteur
  7. Postscript Post. Vous devez avoir installΘ Post correctement. Vous devez
  8. Θgalement configurer les prΘfΘrences graphiques de votre imprimante 
  9. (surtout la taille de la page et la densitΘ). L'avantage est que vous 
  10. pouvez imprimer les fichiers EPS et utiliser les fonts Adobe Type 1 plut⌠t
  11. que leurs conversions en CG. Il demande et sauve le rΘpertoire o∙ il doit
  12. stocker les fichiers temporaires et o∙ se trouve Post.    
  13. */
  14.  
  15.   
  16. /* PrintUsingPost */
  17. /* This genie uses the public domain Postscript interpreter "Post" to print
  18. your document. The advantages are that you can print .eps files on a non-Post
  19. script printer and that you can use real Type 1 fonts, rather than converted
  20. versions.  The files "post" and "init.ps" should be in a drawer called "post"
  21. in your "PPage:" drawer (if not, modify the indicated line in the genie), the
  22. necessary .psfont files in CGFonts:ps, and "post.library" in libs:  You do
  23. NOT need "Conman". 
  24. Make sure the assigns for PPage: and CGFonts: are set up in your 
  25. startup-sequence or user-startup files. It is also essential to set the 
  26. Limits in your printer graphics preferences to the correct page size in 
  27. pixels i.e. the printer's dots-per-inch * page size in inches. Typical 
  28. figures are 1500 by 2100. */
  29. /* Note: There is a bug in Post which means that it will refuse to print 
  30. colour bitmaps on colour printers under WB 2.04. It seems to be OK under 
  31. WB 1.3. 
  32. Also, gradient fills do not work in colour. Colour separations and B&W are OK. 
  33. Versions of Post older than 1.7 have problems with files from Quark XPress 
  34. and Freehand.
  35. */
  36. /* Written by Don Cox. Copyright. Not Public Domain. All rights reserved. */
  37.  
  38.  
  39. trace n
  40. signal on error
  41. signal on syntax
  42. address command
  43. call SafeEndEdit.rexx()
  44. call ppm_AutoUpdate(0)
  45. cr="0a"x
  46.                                         
  47. /* Demande des donnΘes a sauver dans le fichier de configuration */
  48. fichiercfg="rexx:ImprimeAvecPost.cfg"
  49.     
  50. idem = 0                                                     
  51. post = ""
  52. tempdir = ""
  53.    
  54. /* Demande si nouvelle config */
  55. if exists(fichiercfg) then do
  56.     idem = ppm_Inform(2,"Utilisation de la configuration sauvΘe ?","Non","Oui")
  57.     end
  58.  
  59. if (~exists(fichiercfg) | idem=0) then do
  60.     /* Quel est le rΘpertoire temporaire */
  61.     tempdir = ppm_GetFileName("Choix du RΘpertoire Temporaire","","")
  62.     if tempdir = "" then exit_msg("OpΘration AnnulΘe")
  63.     /* RΘcupΘration du rΘpertoire */
  64.     pos = max(lastpos("/",tempdir),lastpos(":",tempdir))
  65.     tempdir = delstr(tempdir,pos+1)
  66.  
  67.     /* O∙ est Post ? */
  68.     post =  ppm_GetFileName("Choix du rΘpertoire de Post", "", "post")
  69.     if post = "" then exit_msg("OpΘration AnnulΘe")
  70.     /* RΘcupΘration du rΘpertoire */
  71.     pos = max(lastpos("/",post),lastpos(":",post))
  72.     post = delstr(post,pos+1)
  73.     /* Test de la prΘsence de Post dans le rΘpertoire choisi */
  74.     if ~exists(post"post") then exit_msg("Post ne se trouve pas dans le rΘpertoire choisi")    
  75.     
  76.     if ppm_Inform(2,"Sauvegarder dans le fichier de configuration ?", "Non", "Oui") = 1 then do
  77.         if open(cfg,fichiercfg,"W") then do
  78.             call writeln(cfg,tempdir)
  79.             call writeln(cfg,post)
  80.             call close(cfg)
  81.         end
  82.         else
  83.             exit_msg("Impossible de sauvegarder dans le fichier de configuration")
  84.         end
  85.     end
  86. else if idem = 1 then do
  87.             if open(cfg,fichiercfg,"R") then do
  88.                 tempdir = readln(cfg)
  89.                 post = readln(cfg)
  90.                 call close(cfg)
  91.                 end
  92.              else
  93.                 exit_msg("Impossible de lire le fichier de configuration")
  94.       end
  95.  
  96. oldoutput = ppm_GetPSOutput()
  97. call ppm_SetPSFontDownload(0)
  98. call ppm_SetPSOutput(tempdir"IAP.ps")
  99. success = ppm_PrintDocPS(1,1)
  100. if success ~=1 then exit_msg("Sauvegarde temporaire du fichier Postscript impossible")
  101.     
  102. iaptemp = tempdir||"IAP"
  103.  
  104. /* Y a-t-il des espaces dans iaptempps */
  105. iaptempps = tempdir||"IAP.ps"
  106. if lastpos(" ",iaptempps) ~=0 then iaptempps = '22'x||iaptempps||'22'x
  107.  
  108. /* Set up a text file in temp dir and then send it to a temporary command window */
  109. conwindow = "CON:40/40/500/200/NewWindow"
  110. call open out, iaptemp, write  /* This wipes out any existing ram:temp  */
  111. call writeln out, "cd "post /* post is in drawer "Post" in "PPage:" - if not, change this line  */
  112. call writeln out, "post init.ps "iaptempps /* To use lots of fonts in one document, add memory to Post here. See Post documentation. */
  113. call writeln out, "delete "iaptempps
  114. call writeln out, "endcli"
  115. call close out            
  116.     
  117. /* Y a-t-il des espaces dans iaptemp */
  118. if lastpos(" ",iaptemp) ~=0 then iaptemp = '22'x||iaptemp||'22'x   
  119. "newcli" conwindow iaptemp
  120.  
  121. call ppm_SetPSOutput(oldoutput)
  122. call exit_msg()
  123.  
  124. end
  125.  
  126. error:
  127. syntax:
  128.     do
  129.     exit_msg("ArrΩt du GΘnie d√ α l'erreur: "errortext(rc))   
  130.     end
  131.  
  132. exit_msg:
  133.     do
  134.     parse arg message
  135.     if message ~= "" then
  136.     call ppm_Inform(1,message,)
  137.     call ppm_ClearStatus()
  138.     call ppm_PPageToFront()
  139.     call ppm_AutoUpdate(1)
  140.     exit
  141.     end
  142.  
  143.