<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.
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.
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.
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
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.
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.
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
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.
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
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.
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.
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
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:
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.
======================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 "
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.
======================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 "