OVH Cloud OVH Cloud

Impression sous windows

1 réponse
Avatar
Thomas Harding
Bonjour, Je cherche à imprimer du postscript sur un serveur windows
(j'ai pas le choix de l'os), pour se faire, je passe par ghostscript
pour le transformer en un language compréhensible par l'imprimante.
Malheureusement, je n'obtiens qu'une (longue) suite de caractères
ésotériques -- rien à voir avec du postscript --, montrant que
l'imprimante est appelée en mode texte. Ou est l'erreur ?
(l'impression dans un fichier pdf est OK).

######
function ImprimeGraphique ($fichierEntree,$fichierSortie)
{
//imprime un fichier Postscript
//(dans un fichier pdf si SERVER_OS == "windows"
// et GRAPHIC_PRINTER_NAME == "pdf")
if (SERVER_OS == "unix")
{
// PRINTCOMMAND_GRAPHICS = lpr -Pimprimante, lp -d imprimante, etc
$commande = PRINTCOMMAND_GRAPHICS;
exec ("$commande $fichierEntree");
unlink($fichierEntree);
} else {
if (GRAPHIC_PRINTER_NAME == "pdf")
{
$commande = GHOSTSCRIPT_CMD
. " -dSAFER "
. " -dCompatibilityLevel=1.2 "
. " -q "
. " -dNOPAUSE "
. " -dBATCH "
. " -sDEVICE=pdfwrite "
. " -sOutputFile=$fichierSortie "
. " -sPAPERSIZE=a4 "
. " -c .setpdfwrite "
. " -f $fichierEntree";
exec ($commande);
unlink ($fichierEntree);
} else {

// GRAPHIC_PRINTER_DEVICE = /device/ ghostscript
// GHOSTSCRIPT_CMD = chemin complet de l'executable ghostscript
$commande = GHOSTSCRIPT_CMD
. " -dSAFER "
. " -q "
. " -dNOPAUSE "
. " -dBATCH "
. " -sDEVICE=" . GRAPHIC_PRINTER_DEVICE //vaut stcolor
. " -sOutputFile=$fichierSortie "
. " -sPAPERSIZE=a4 "
. " -f $fichierEntree";

exec ($commande);
unlink ($fichierEntree);
$fichier = fopen ($fichierSortie,'rb');
$impression = fread ($fichier, filesize ($fichierSortie));
$printer = printer_open (GRAPHIC_PRINTER_NAME);
printer_set_option ($printer,'PRINTER_ORIENTATION',
'PRINTER_ORIENTATION_PORTRAIT');
printer_set_option ($printer,'PRINTER_PAPER_FORMAT',
'PRINTER_FORMAT_A4');
printer_set_option ($printer,'PRINTER_MODE','raw');
printer_write ($printer,$impression);
printer_close ($printer);
fclose($fichier);
unlink ($fichierSortie);
}
}
}
########

--
Thomas Harding

1 réponse

Avatar
Thomas Harding
Bonjour, Je cherche à imprimer du postscript sur un serveur windows
(j'ai pas le choix de l'os), pour se faire, je passe par ghostscript


J'ai trouvé en /lisant le manuel/ de Ghostscript :

// GRAPHIC_PRINTER_DEVICE = /device/ ghostscript
// GHOSTSCRIPT_CMD = chemin complet de l'executable ghostscript
$commande = GHOSTSCRIPT_CMD
. " -dSAFER "
. " -q "
. " -dNOPAUSE "
. " -dBATCH "
. " -sDEVICE=" . GRAPHIC_PRINTER_DEVICE //vaut stcolor
. " -sOutputFile="%printer%" . GRAPHIC_PRINTER_NAME . """

. " -sPAPERSIZE¤ "
. " -f $fichierEntree";

exec ($commande);
unlink ($fichierEntree);
}
}
}
########



NB : il y a un device mswinpr2, sensé fonctionner avec la plupart des
imprimantes sous Windows, mais celui-ci tente d'ouvrir une boite de
dialogue, bloquant donc complètement sous PHP. Dommage :(

Ceci dit, l'autre solution (imprimer le fichier binaire par le biais de PHP)
aurait du fonctionner. Des idées ?

--
Thomas Harding