Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/11/2015, à 13:26

davy39

CUPS, lpr, Ghostscript et PDF : pas d'accents à l'impression !

Salut à tou-te-s,
Je viens de passer quelques heures pour comprendre pourquoi certaines lettres manquaient lors de mes impressions en ligne de commande avec `lpr`... alors autant faire profiter la communauté.


Exposé du problème :

En imprimant un PDF en ligne de commande via `lpr`, les lettres accentuées sont manquantes.
Pas de problème constaté avec une impression depuis Evince.

Configuration du système :

- Linux Mint, basé sur Ubuntu 14.04
- Imprimante Samsung M2022 avec drivers UnifiedLinuxDriver-1.00.06 


Étude du problème :

Après avoir cherché en vain si je ne passais pas à côté de paramètres à passer à lpr, j'ai soupçonné un problème du côté de CUPS.

J'ai donc activé le mode debug du loglevel dans `/etc/cups/cupsd.conf`. D'après le mode de fonctionnement de CUPS, il m'a semblé utile de me pencher sur les filtres utilisés, c'est à dire les différentes étapes de transformation du PDF jusqu'au fichier envoyé à l'imprimante

Voici la séquence qui a retenue mon attention :

# cat /var/log/cups/error_log | grep filter
I [09/Nov/2015:17:24:50 +0100] [Job 101] Started filter /usr/lib/cups/filter/pdftopdf (PID 23019)
I [09/Nov/2015:17:24:50 +0100] [Job 101] Started filter /usr/lib/cups/filter/gstoraster (PID 23020)
I [09/Nov/2015:17:24:50 +0100] [Job 101] Started filter /usr/lib/cups/filter/rastertospl (PID 23021)

Le denier filtre correspond à mon driver samsung, imposé à CUPS via le fichier ppd de mon imprimante (*cupsFilter:  "application/vnd.cups-raster 0 rastertospl").
CUPS a donc pour mission de transformer le PDF en raster (image brutte) envoyée à l'imprimante via le driver (rastertospl).

J'ai donc étudié l'influence des différents filtres à l'aide de la commande `cupsfilter`, et observé le raster obtenu via le soft rasterview.

En définitive le problème vient du filtre gstoraster qui s'appuie sur Ghostscript. En utilisant la commande gs (par exemple `gs -sDEVICE=jpeg -sOutputFile=foo.jpg foo.pdf`) , on s'aperçoit en effet que les accents disparaissent. Il en va de même avec tous les outils basé sur gs : pdf2ps... Les derniers exécutables proposés au téléchargement corrigent ce problème mais ne propose pas -sDEVICE=cups nécessaire à gstoraster.



Solution :

J'ai tout d'abord cherché à mettre à jour gs et cups mais les version disponibles dans les dépôts sont trop anciennes et aucun ppa ne propose des mises à jour convenables. Une solution un peu lourde est de transformer le pdf en ps avec un exécutable récent de gs puis de l'imprimer...

La solution définitive, bien plus simple, que j'ai adoptée est d'imposer à CUPS l'utilisation du filtre pdftoraster au lieu de gstoraster. pdftoraster étant basé sur poppler, il n'est pas soumis au bug de gs.

Cela se fait très simplement en modifiant le fichier `/usr/share/cups/mime/cupsfilters.convs`, dans la partie `# Raster filters...`, en commentant la ligne suivante : `application/vnd.cups-pdf    application/vnd.cups-raster    99    gstoraster`

#application/vnd.cups-pdf	application/vnd.cups-raster	99	gstoraster
application/vnd.cups-postscript	application/vnd.cups-raster	175	gstoraster
application/vnd.cups-pdf	application/vnd.cups-raster	100	pdftoraster

Voilà tout... en résumé si certains ont des problèmes d'accents avec cups, voyez du côté des filtres utilisés en modifiant `/usr/share/cups/mime/cupsfilters.convs`. Pour les problèmes liés à ghostscript ou dérivés, sachez qu'il vous faut soit utiliser un binaire de gs plus récent, soit utiliser les outils de poppler-utils.

J'espère que ce post sera utile à certains.

Hors ligne