web-dev-qa-db-fra.com

Comment puis-je imprimer des fichiers svg en ligne de commande à l'aide de la visionneuse d'images (eog) ou de lpr?

Est-il possible d'imprimer un fichier svg via la visionneuse d'images (c.-à-d. Œil du gnome) à partir de la ligne de commande ou en utilisant lpr?

Le problème sous-jacent est que j'ai un répertoire contenant de nombreux fichiers svg et que je veux tous les imprimer automatiquement sans avoir à ouvrir chaque fichier individuellement dans le visualiseur d'images, puis à imprimer à l'aide de l'interface utilisateur. Je n'ai pas besoin de changer les options d'impression dans eog (les valeurs par défaut fonctionnent correctement).

Notez que la commande lpr ne semble pas aider ici. Appliquée aux fichiers svg, elle affiche simplement de nombreuses pages XML. Je serais tout aussi heureux avec toute solution impliquant d'obtenir lpr pour imprimer l'image au format SVG plutôt que XML.

3
Colin T Bowers

Comme vous avez pu le constater, lpr n’imprimera que les fichiers svg au format XML (et imprimera donc uniquement les pages contenant du texte).

Cependant, il existe une solution très simple qui consiste à convertir les fichiers svg en quelque chose de plus pratique, tel que png à la volée puis automatiquement imprimer ces fichiers générés. Deux étapes sont nécessaires:

Étape 1: Installez imagemagick:

Sudo apt-get install imagemagick

Étape 2: Tant que vous avez correctement configuré lp avec une imprimante "par défaut", exécutez la boucle suivante dans un écran de terminal à partir du répertoire contenant vos fichiers svg:

for i in *.svg
do
convert "$i" png:- | lpr
done

Explication:

Cette "boucle" accomplit les tâches suivantes:

  1. Traite chaque fichier svg tour à tour dans le répertoire
  2. Utilise l'utilitaire convert (partie de imagemagick) pour générer des fichiers png à partir de tous les fichiers svg.
  3. Passe chaque fichier png dans stdout (plutôt que de l'écrire définitivement sur le disque)
  4. Imprime ce fichier en utilisant lpr

Cela a parfaitement fonctionné sur mon propre système et devrait également fonctionner sur votre système :).

4
andrew.46