Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[cygwin] Impression

19 réponses
Avatar
Olivier Miakinen
Bonjour,

<préambule>
Je n'ai pas trouvé de groupe parfaitement adapté pour cette question à
cheval sur le monde Unix (via cygwin) et le monde Windows, alors je la
pose à la fois sur fco.unix et fco.ms-windows. J'ai placé le suivi sur
fco.unix mais bien sûr vous pouvez le mettre ailleurs en fonction de la
réponse.
</préambule>

[ EDIT ]
Suite à une erreur dans le nom du groupe fr.comp.os.ms-windows, je
republie cet article avec supersedes. Désolé.
[ / ]

Sur mon PC, j'ai un Windows 2000 qui accède à une imprimante sans aucun
problème (imprimante réseau fournie avec un pilote Windows). Sur la même
machine j'ai installé cygwin, et la commande lpr imprime aussi très bien
mes fichiers de texte vers la même imprimante, avec une taille des
caractères par défaut (un peu grosse) et une longueur des tabulations
par défaut (environ 7,5 fois la largeur d'un caractère).

Ce que je voudrais, c'est passer mes fichiers texte par une moulinette
telle que la commande enscript, pour réduire la taille de la police de
caractères, fixer le nombre de lignes par page, ajouter des numéros de
ligne, fixer la largeur des tabulations à 4 caractères, et ainsi de
suite. Malheureusement, mon imprimante (HP Photosmart C7280) ne semble
pas comprendre le PostScript car elle imprime les instructions reçues
au lieu de les interpréter.

Comment faire ?

-------------------------------------------------------------------

Par exemple (on peut rêver), est-ce que je peux trouver un pilote pour
cette imprimante qui soit directement accessible depuis cygwin, et un
utilitaire du type d'enscript mais qui sache parler à ce pilote ?

Ou bien est-il possible d'installer une imprimante virtuelle sous
Windows qui comprendrait le PostScript et le traduirait au pilote
d'imprimante dans le monde Windows, imprimante virtuelle à laquelle
je pourrais accéder depuis cygwin ?

Ou encore, existe-t-il une autre solution à laquelle je n'ai pas pensé ?

-------------------------------------------------------------------

En désespoir de cause, je me rabattrai sur un filtre se contentant de
traduire les tabulations en séries d'espace selon une taille donnée.
Mais je ne pourrai malheureusement pas diminuer la taille de la police.


Cordialement,
--
Olivier Miakinen

10 réponses

1 2
Avatar
Jacques L'helgoualc'h
Le 10-12-2007, Olivier Miakinen a écrit :
Bonjour,


bonjour,

[...]
Ce que je voudrais, c'est passer mes fichiers texte par une moulinette
telle que la commande enscript, pour réduire la taille de la police de
caractères, fixer le nombre de lignes par page, ajouter des numéros de
ligne, fixer la largeur des tabulations à 4 caractères, et ainsi de
suite. Malheureusement, mon imprimante (HP Photosmart C7280) ne semble
pas comprendre le PostScript car elle imprime les instructions reçues
au lieu de les interpréter.


Google HP C7280 site:hp.com -> pas de chance,
,----
| Langues HP PCL 3 GUI, PJL, PML, XHTML-Print
| standard de
| l'imprimante
`----
mais au moins le PCL est connu.

Comment faire ?


Cette imprimante n'est pas référencée sur
http://www.linuxprinting.org/printer_list.cgi?make=HP
mais y a des quasi homonymes... ça pourrait donner des pistes.

Par exemple (on peut rêver), est-ce que je peux trouver un pilote pour
cette imprimante qui soit directement accessible depuis cygwin, et un
utilitaire du type d'enscript mais qui sache parler à ce pilote ?

Ou bien est-il possible d'installer une imprimante virtuelle sous
Windows qui comprendrait le PostScript et le traduirait au pilote
d'imprimante dans le monde Windows, imprimante virtuelle à laquelle
je pourrais accéder depuis cygwin ?


Ghostscript est un interpréteur PostScript.

Ou encore, existe-t-il une autre solution à laquelle je n'ai pas pensé ?


Installer (La)TeX :) --- en général, les distributions (MikTeX, Texlive,
...) comprennent des utilitaires d'impression et des convertisseurs
comme dvips, ou dans ton cas dvipcl.

Pour ce qui est de la qualité typographique, txt->tex->... mérite un essai.

En désespoir de cause, je me rabattrai sur un filtre se contentant de
traduire les tabulations en séries d'espace selon une taille donnée.
Mais je ne pourrai malheureusement pas diminuer la taille de la police.


Ah, monsieur est anarchiste et imprudent ?

Cordialement,


aussi,
--
Jacques L'helgoualc'h

Avatar
Jacques L'helgoualc'h
Le 10-12-2007, Olivier Miakinen a écrit :
Bonjour,


bonjour,

[...]
Ce que je voudrais, c'est passer mes fichiers texte par une moulinette
telle que la commande enscript, pour réduire la taille de la police de
caractères, fixer le nombre de lignes par page, ajouter des numéros de
ligne, fixer la largeur des tabulations à 4 caractères, et ainsi de
suite. Malheureusement, mon imprimante (HP Photosmart C7280) ne semble
pas comprendre le PostScript car elle imprime les instructions reçues
au lieu de les interpréter.


Google HP C7280 site:hp.com -> pas de chance,
,----
| Langues HP PCL 3 GUI, PJL, PML, XHTML-Print
| standard de
| l'imprimante
`----
mais au moins le PCL est connu.

Comment faire ?


Cette imprimante n'est pas référencée sur
http://www.linuxprinting.org/printer_list.cgi?make=HP
mais y a des quasi homonymes... ça pourrait donner des pistes.

Par exemple (on peut rêver), est-ce que je peux trouver un pilote pour
cette imprimante qui soit directement accessible depuis cygwin, et un
utilitaire du type d'enscript mais qui sache parler à ce pilote ?

Ou bien est-il possible d'installer une imprimante virtuelle sous
Windows qui comprendrait le PostScript et le traduirait au pilote
d'imprimante dans le monde Windows, imprimante virtuelle à laquelle
je pourrais accéder depuis cygwin ?


Ghostscript est un interpréteur PostScript.

Ou encore, existe-t-il une autre solution à laquelle je n'ai pas pensé ?


Installer (La)TeX :) --- en général, les distributions (MikTeX, Texlive,
...) comprennent des utilitaires d'impression et des convertisseurs
comme dvips, ou dans ton cas dvipcl.

Pour ce qui est de la qualité typographique, txt->tex->... mérite un essai.

En désespoir de cause, je me rabattrai sur un filtre se contentant de
traduire les tabulations en séries d'espace selon une taille donnée.
Mais je ne pourrai malheureusement pas diminuer la taille de la police.


Ah, extraite de son contexte, cette dernière phrase paraît imprudente.

Cordialement,


aussi,
--
Jacques L'helgoualc'h

Avatar
Jean-Louis Hamel


Ce que je voudrais, c'est passer mes fichiers texte par une moulinette
telle que la commande enscript, pour réduire la taille de la police de
caractères, fixer le nombre de lignes par page, ajouter des numéros de
ligne, fixer la largeur des tabulations à 4 caractères, et ainsi de
suite. Malheureusement, mon imprimante (HP Photosmart C7280) ne semble
pas comprendre le PostScript car elle imprime les instructions reçues
au lieu de les interpréter.

Comment faire ?



Ci-joint deux scripts bash que j'utilise depuis longtemps sous cygwin,
en relation avec GhostScript qui doit être installé et que l'on peut
obtenir ici:

http://pages.cs.wisc.edu/~ghost/

Ces scripts devront peut-être être adaptés à votre système

- "mylpr" imprime un fichier texte ou postscript. Il considère qu'un
fichier commençant par %! est postscript. Sinon il considère que c'est
un fichier texte qu'il transforme en postscript par le script "pl".
"mylpr" fonctionne uniquement en noir et blanc, car il utilise le pilote
deskjet500 de GhosScript qui devrait fonctionne avec toutes les
imprimantes PCL HP (je viens de vérifier sur mon Officejet K5400).

- le script "pl" transforme un fichier texte en postscript.

En espérant que ça aide!

======================script mylpr===================================== #!/bin/sh
temp=/tmp/lpgs$$
cat $@ > $temp

if [ -z "`head -1 $temp | grep '^%!'`" ]; then
pl $temp > $temp.a
mv $temp.a $temp
fi

start /m /w "$GSDIRgswin32.exe" -I/GS/fonts
-q -sDEVICE=djet500
-sPAPERSIZE¤ -r300 -dNOPAUSE -dBATCH -- $temp

rm $temp

======================script pl======================================== #!/bin/sh
pslp()
{
# pslp --- Asci to PostScript translator
#
# Put out the header
#
cat <<-EnD
%!PS-Adobe-2.0
%%Title: pslp
%
%%Pages: (atend)
/encoding {ISOLatin1Encoding} def
/font /Courier def
/pointsize 10 def
%
% If user requested an encoding that does not exist, use whatever available
%
/encoding-vec encoding where {
begin encoding cvx exec end % convert name to vector
}{
systemdict /EncodingDirectory known {
EncodingDirectory encoding known { % maybe it's there
EncodingDirectory encoding get
}{
/ISOLatin1Encoding where { % find a substitute
pop /ISOLatin1Encoding
}{
/StandardEncoding
} ifelse
cvx exec % now convert name to vector
} ifelse
}{
/ISOLatin1Encoding where { % find a substitute
pop /ISOLatin1Encoding
}{
/StandardEncoding
} ifelse

cvx exec % now convert name to vector
} ifelse
} ifelse
def

systemdict /encodefont known {
font findfont pointsize scalefont encoding-vec encodefont setfont
}{
font findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding encoding-vec def
currentdict
end
/font-newencoding exch definefont pop
/font-newencoding findfont
pointsize scalefont setfont
} ifelse

/inch {72 mul} def
/deltay 10.5 66.5 div inch def % allow .25 inch margins all sides
/leftmargin .8 inch def
/topmargin 11 inch deltay sub def

/gotop {
leftmargin topmargin moveto
} def

/crlf {
currentpoint exch pop deltay sub leftmargin exch moveto
} def

%%EndProlog pslp
EnD

#
# Put out the text
#
# expand tabs:
expand $file |
# escape chars special to PS
# and format each line as: (This is the text.) show crlf
sed -e 's//\/g' -e 's/[()]/&/g'
-e 's/^/(/' -e 's/$/) show crlf/' |
# insert page skip every 66 lines
awk '
BEGIN {nline = 1; npage = 1;}
{if (nline == 1) {print "%%Page: " npage; print "gotop";}
if ($1 == "()") {nline = 67;}
else {print $0; nline = nline + 1;}
if (nline > 66) {nline = 1; npage = npage + 1; print "showpage";}
}
END {if (nline > 1) print "showpage"; print "%%Trailer pslp";}
'
}


#
# Initialize some variables:
#
file=$@
font=Courier
#
# Print the file:
#
# perform ASCII-to-PostScript conversion with pslp
pslp # Assumes operation on $file
#echo "
Avatar
Olivier Miakinen
Bonjour, et merci pour ta réponse.


Ci-joint deux scripts bash que j'utilise depuis longtemps sous cygwin,
en relation avec GhostScript qui doit être installé et que l'on peut
obtenir ici:

http://pages.cs.wisc.edu/~ghost/


J'espère avoir pris la bonne version : j'ai récupéré gs860w32.exe (et
gsv49w32.exe pour gsview) et je les ai installés, mais je n'ai pas
encore compris comment ça marche.

======================script mylpr===================================== > [...]
start /m /w "$GSDIRgswin32.exe" -I/GS/fonts
-q -sDEVICE=djet500
-sPAPERSIZE¤ -r300 -dNOPAUSE -dBATCH -- $temp


Je n'ai pas installé la commande start. C'est dans quelle partie de cygwin ?


Cordialement,
--
Olivier Miakinen

Avatar
Olivier Miakinen
Bonjour,


Google HP C7280 site:hp.com -> pas de chance,
,----
| Langues HP PCL 3 GUI, PJL, PML, XHTML-Print
| standard de
| l'imprimante
`----
mais au moins le PCL est connu.


Ah, déjà merci pour cette info : je ne savais pas quels pouvaient être
les langages compris par une imprimante en dehors de PostScript.

[...]

Ghostscript est un interpréteur PostScript.


Initialement j'avais cru comprendre qu'il faisait l'inverse (produire du
PostScript à partir d'autre chose) mais puisque Jean-Louis Hamel et toi
êtes d'accord je l'ai installé hier. Reste à voir comment on s'en sert :
je comprends un peu l'anglais mais j'ai du mal quand c'est un sujet tout
neuf pour moi.

Installer (La)TeX :) --- en général, les distributions (MikTeX, Texlive,
...) comprennent des utilitaires d'impression et des convertisseurs
comme dvips, ou dans ton cas dvipcl.

Pour ce qui est de la qualité typographique, txt->tex->... mérite un essai.


Je ne connais pas non plus (La)Tex, mais effectivement ça pourrait être
aussi l'occasion que je m'y mette.

[...] diminuer la taille de la police.


Ah, extraite de son contexte, cette dernière phrase paraît imprudente.


:-D

Cordialement,
--
Olivier Miakinen


Avatar
Jacques L'helgoualc'h
Le 11-12-2007, Olivier Miakinen a écrit :
Bonjour,


Google HP C7280 site:hp.com -> pas de chance,
,----
| Langues HP PCL 3 GUI, PJL, PML, XHTML-Print
| standard de
| l'imprimante
`----
mais au moins le PCL est connu.


Ah, déjà merci pour cette info : je ne savais pas quels pouvaient être
les langages compris par une imprimante en dehors de PostScript.


Chaque grand constructeur d'imprimante a les siens, et émule plus ou
moins ceux des autres. PCL est le langage bien documenté des traceurs
HP, et PJL (j comme job) le langage de commande : tu devrais pouvoir
télécommander ton imprimante/photocopieuse/cafetière/...

[...]

Ghostscript est un interpréteur PostScript.


Initialement j'avais cru comprendre qu'il faisait l'inverse (produire du
PostScript à partir d'autre chose) mais puisque Jean-Louis Hamel et toi
êtes d'accord je l'ai installé hier. Reste à voir comment on s'en sert :
je comprends un peu l'anglais mais j'ai du mal quand c'est un sujet tout
neuf pour moi.


En principe, on ne s'en sert pas directement mais on l'utilise dans des
scripts ; ghostscript est utile comme moteur d'affichage, par exemple
(les écrans PS sont plutôt rares), et comme traducteur ps->autre langage
d'imprimante.

On peut imprimer en PS à partir de n'importe quelle application windows
en installant le pilote d'une imprimante laser PS bidon, et en imprimant
dans un fichier.

Installer (La)TeX :) --- en général, les distributions (MikTeX, Texlive,
...) comprennent des utilitaires d'impression et des convertisseurs
comme dvips, ou dans ton cas dvipcl.



Il existe aussi des convertisseurs ps2pcl ou pstopcl --- sur google, la
paire « ps2pcl cygwin » ne donne pas grand-chose, mais « cygwin
ghostscript » est plus prometteur.

Pour ce qui est de la qualité typographique, txt->tex->... mérite un essai.


Je ne connais pas non plus (La)Tex, mais effectivement ça pourrait être
aussi l'occasion que je m'y mette.


Heu, c'était plus une boutade qu'autre chose !

En installant une distribution TeX, on trouve en général tout configurés
des utilitaires d'impression, dont ghostscript ; mais pour faire
simplement du « pretty printing » de texte brut, c'est tout de même un
peu (...) lourd.

Cordialement,


aussi,
--
Jacques L'helgoualc'h


Avatar
Jacques L'helgoualc'h
Le 11-12-2007, Olivier Miakinen a écrit :
Bonjour,


Google HP C7280 site:hp.com -> pas de chance,
,----
| Langues HP PCL 3 GUI, PJL, PML, XHTML-Print
| standard de
| l'imprimante
`----
mais au moins le PCL est connu.


Ah, déjà merci pour cette info : je ne savais pas quels pouvaient être
les langages compris par une imprimante en dehors de PostScript.


Chaque grand constructeur d'imprimantes a les siens, et émule plus ou
moins ceux des autres. PCL est le langage bien documenté des traceurs
HP, et PJL (j comme job) le langage de commande : tu devrais pouvoir
télécommander ton imprimante/photocopieuse/cafetière/...

[...]

Ghostscript est un interpréteur PostScript.


Initialement j'avais cru comprendre qu'il faisait l'inverse (produire du
PostScript à partir d'autre chose) mais puisque Jean-Louis Hamel et toi
êtes d'accord je l'ai installé hier. Reste à voir comment on s'en sert :
je comprends un peu l'anglais mais j'ai du mal quand c'est un sujet tout
neuf pour moi.


En principe, on ne s'en sert pas directement mais on l'utilise dans des
scripts ; ghostscript est utile comme moteur d'affichage, par exemple
(les écrans PS sont plutôt rares), et comme traducteur ps->autre langage
d'imprimante.

On peut écrire en PS à partir de n'importe quelle application windows en
installant le pilote d'une imprimante laser PS bidon, et en imprimant
dans un fichier.

Installer (La)TeX :) --- en général, les distributions (MikTeX, Texlive,
...) comprennent des utilitaires d'impression et des convertisseurs
comme dvips, ou dans ton cas dvipcl.



Il existe aussi des convertisseurs ps2pcl ou pstopcl --- sur google, la
paire « ps2pcl cygwin » ne donne pas grand-chose, mais « cygwin
ghostscript » est plus prometteur.

Pour ce qui est de la qualité typographique, txt->tex->... mérite un essai.


Je ne connais pas non plus (La)Tex, mais effectivement ça pourrait être
aussi l'occasion que je m'y mette.


Heu, c'était plus une boutade qu'autre chose !

En installant une distribution TeX, on trouve en général tout configurés
des utilitaires d'impression, dont ghostscript ; mais pour faire
simplement du « pretty printing » de texte brut, c'est tout de même un
peu (...) lourd.

Cordialement,


aussi,
--
Jacques L'helgoualc'h


Avatar
Thomas vO
À (at) Tue, 11 Dec 2007 22:45:52 +0000 (UTC),
Jacques L'helgoualc'h <lhh+ nous disait (told us):
On peut écrire en PS à partir de n'importe quelle application
windows en installant le pilote d'une imprimante laser PS bidon, et
en imprimant dans un fichier.


la dernière fois que j'ai essayé ça, j'ai dû aller bidouiller le
PostScript produit à la mimine pour en faire quelque chose... (mais
c'était il y a quelques années, ça a peut-être changé depuis)

--
Thomas vO - <http://perso.enstimac.fr/~vanouden/&gt;

Avatar
Jean-Louis Hamel
Bonjour, et merci pour ta réponse.

Ci-joint deux scripts bash que j'utilise depuis longtemps sous cygwin,
en relation avec GhostScript qui doit être installé et que l'on peut
obtenir ici:

http://pages.cs.wisc.edu/~ghost/


J'espère avoir pris la bonne version : j'ai récupéré gs860w32.exe (et
gsv49w32.exe pour gsview) et je les ai installés, mais je n'ai pas
encore compris comment ça marche.



De plus amples explications sur mon site perso ici:

http://jlhamel.club.fr/GIMP2/index.html#Prise_en_compte_des_fichiers

gsview n'est pas nécessaire pour faire tourner mes scripts mais c'est
une interface graphique pour GhostScript qui permet de visualiser les
fichiers PostScript.

======================script mylpr===================================== >> [...]
start /m /w "$GSDIRgswin32.exe" -I/GS/fonts
-q -sDEVICE=djet500
-sPAPERSIZE¤ -r300 -dNOPAUSE -dBATCH -- $temp


Je n'ai pas installé la commande start. C'est dans quelle partie de cygwin ?



start est une commande de Windows XP, interne au shell cmd.exe qui, pour
une installation normale, se trouve dans C:WINDOWSsystem32. Donc, pour
utiliser la commande start, le répertoire:
/cygdrive/c/WINDOWS/system32
doit se trouver dans le PATH de cygwin (en fin de PATH, voir ci-dessous).

Remarque 1. Les commandes de Windows fonctionnent sous cygwin, pourvu
que le PATH soit correct.
Remarque 2. Les PATH des commandes de Windows doivent plutôt se trouver
en fin de PATH, pour éviter des problèmes en cas d'homonymie de
commandes entre Windows et cygwin (find par exemple, si on veut
conserver le find d'Unix).

Cordialement,

--
JLH


Avatar
Cyrille Lefevre
[...]
start /m /w "$GSDIRgswin32.exe" -I/GS/fonts
-q -sDEVICE=djet500
-sPAPERSIZE¤ -r300 -dNOPAUSE -dBATCH -- $temp


Je n'ai pas installé la commande start. C'est dans quelle partie de cygwin ?


c'est une commande windows... :)

Regards, Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.


1 2