Outils pour utilisateurs

Outils du site


atelier20161119-impression-pdf-android-run
→ Slide 1

Impression PDF Android

Philippe Wambeke - LoliGrUB

→ Slide 2

L'objectif

Un utlisateur “Lambda” doit pouvoir imprimer simplement un PDF depuis son smartphone / sa tablette Android.

  • Sans que Google ne sache ce qui est imprimé
  • Sans que le document ne fasse le tour du monde
  • Sans devoir donner tous les droits à Google sur l'imprimante
  • Sans être obligé d'acheter une imprimante réseau
  • En utilisant des logiciels libres
→ Slide 3

Les ingrédients

↓ Slide 4

Au niveau matériel

  • Une imprimante (réseau ou USB)
  • Un ordinateur connecté à l'imprimante (un RPI suffit amplement)
  • La mise en réseau de l'ordinateur et du périphérique Android
↓ Slide 5

Au niveau logiciel

  • Sur le serveur:
    • CUPS (Common Unix Printing Sytem)
    • Un serveur web (Apache par exemple) avec le module “webdav”
    • incron: permet d'être averti sur changements du système de fichiers
    • Un script Bash fait maison ;-)
  • Sur Android:
    • Un (bête) client webdav
→ Slide 6

La recette

Quel va être le parcours du PDF ?

  1. Envoyé depuis Android vers le serveur web à l'aide du protocole webdav
  2. Incron détectera qu'un nouveau fichier vient d'être “uploadé” et déclenchera l'exécution du script bash maison
  3. Le script maison vérifie qu'il s'agit bien d'un PDF et l'imprime via CUPS
→ Slide 7

Mise en place

↓ Slide 8

Installation du serveur web

  • Installer Apache et CUPS:
sudo apt-get install apache2 cups
  • Activer le module webdav:
sudo a2enmod dav
sudo a2enmod dav_fs
↓ Slide 9

Configuration du serveur web (1/3)

Dossier de destination

Le dossier qui recevra les fichiers PDF sera ici /var/www/webdav. Ce dossier doit être créé et appartenir à Apache.

sudo mkdir -p /var/www/webdav
sudo chown -R www-data:www-data /var/www/webdav
↓ Slide 10

Configuration du serveur web (2/3)

Configurer Apache et le module webdav

Il faut aussi l'indiquer à Apache dans le dossier sites-available par le fichier /var/www/webdav:

Alias /webdav /var/www/webdav
 
<Location /webdav>
	Options Indexes MultiViews
	DAV On
	Order deny,allow
	deny from all
	allow from 192.168.2
</Location>
↓ Slide 11

Côté serveur web: configuration (3/3)

Il faut ensuite activer le module webdav et recharger la configuration de Apache:

sudo a2ensite webdav
sudo service apache2 reload
↓ Slide 12

Configuration de CUPS (1/2)

Port d'écoute

Permettre d'accéder à CUPS depuis le réseau local en modifiant le fichier de configuration /etc/cups/cupsd.conf.

Remplacer la ligne:

Listen localhost:631

par:

Listen 631
↓ Slide 13

Configuration de CUPS (2/2)

Permettre d'accéder à l'interface d'administration de CUPS:

sudo cupsctl --remote-admin

Finalement, on redémarre CUPS:

sudo systemctl restart cups
↓ Slide 14

Ajouter l'imprimante

En fonction de la marque et du modèle d'imprimante, il peut être nécessaire d'installer des pilotes supplémentaires. Le site https://www.openprinting.org/printers dresse une liste exhaustive des modèles et des drivers correspondant.

Une fois le bon driver installé, reste à ajouter l'imprimante:

↓ Slide 15

Incron

  • Installer incron et permettre à root de l'utiliser. Taper en tant que root:
sudo su
# apt-get install incron
# echo root > /etc/incron.allow
  • Activer la surveillance du dossier de destination:
sudo incrontab -e
  • Et ajouter:
/var/www/webdav IN_MOVED_TO /home/wap/printtest.sh $@ $#
↓ Slide 16

Le script bash

Du côté serveur, il ne reste plus qu'à copier le script bash suivant dans le dossier spécifié à l'étape précédente.

#!/bin/bash
# Petit script pour imprimer un pdf en ligne de commande (trop fort GNU/Linux)
complete_file_name="$1/$2"
 
file_name=$(file "${complete_file_name}" | grep "PDF document" | cut -f1 -d':')
if [ -n "${file_name}" ]; then
	lp -d "HP_DESKJET_990C" "${file_name}"
	rm "${file_name}"
fi
→ Slide 17

Côté Android

Il suffit ensuite d'installer n'importe quel client webdav.

L'impression du PDF se fait simplement en “uploadant” le fichier PDF sur le serveur web.

→ Slide 18

Pour aller plus loin

Il est possible d'améliorer les choses:

  • en implémentant une authentification pour l'envoi des PDF (mode digest)
  • imprimer des images en faisant une conversion à la volée (mogrify)
  • imprimer des documents odt en faisant une conversion à la volée (mais nécessite l'installation d'une usine à gaz)
→ Slide 19

Merci

Questions ?

atelier20161119-impression-pdf-android-run.txt · Dernière modification: 2016/12/15 20:28 par wap