Outils pour utilisateurs

Outils du site


atelier20161119-impression-pdf-android-run

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
atelier20161119-impression-pdf-android-run [2016/12/15 19:03] wapatelier20161119-impression-pdf-android-run [2016/12/15 19:28] (Version actuelle) wap
Ligne 1: Ligne 1:
 ~~NOCACHE~~ ~~NOCACHE~~
 ~~REVEAL theme=sky&transition=convex&controls=1&show_progress_bar=1&build_all_lists=1&open_in_new_window=1~~ ~~REVEAL theme=sky&transition=convex&controls=1&show_progress_bar=1&build_all_lists=1&open_in_new_window=1~~
- 
- 
  
 ====== Impression PDF Android ====== ====== Impression PDF Android ======
Ligne 11: Ligne 9:
 Un utlisateur "Lambda" doit pouvoir imprimer simplement un PDF depuis son smartphone / sa tablette Android. 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 Google ne sache ce qui est imprimé 
-* Sans que le document ne fasse le tour du monde +  * Sans que le document ne fasse le tour du monde 
-* Sans devoir donner tous les droits à Google sur l'imprimante +  * Sans devoir donner tous les droits à Google sur l'imprimante 
-* Sans être obligé d'acheter une imprimante réseau +  * Sans être obligé d'acheter une imprimante réseau 
-* En utilisant des logiciels libres+  * En utilisant des logiciels libres
  
 ===== Les ingrédients ===== ===== Les ingrédients =====
Ligne 21: Ligne 19:
 ==== Au niveau matériel ==== ==== Au niveau matériel ====
  
-* Une imprimante (réseau ou USB) +  * Une imprimante (réseau ou USB) 
-* Un ordinateur connecté à l'imprimante (un RPI suffit amplement) +  * Un ordinateur connecté à l'imprimante (un RPI suffit amplement) 
-* La mise en réseau de l'ordinateur et du périphérique Android+  * La mise en réseau de l'ordinateur et du périphérique Android
  
 ==== Au niveau logiciel ==== ==== Au niveau logiciel ====
  
-[%step] +  * Sur le serveur: 
-* Sur le serveur: +    * CUPS (Common Unix Printing Sytem) 
-[%step] +    * Un serveur web (Apache par exemple) avec le module "webdav" 
- ** CUPS (Common Unix Printing Sytem) +    * incron: permet d'être averti sur changements du système de fichiers 
- ** Un serveur web (Apache par exemple) avec le module "webdav" +    * Un script Bash fait maison ;-) 
- ** incron: permet d'être averti sur changements du système de fichiers +  * Sur Android: 
- ** Un script Bash fait maison ;-) +    * Un (bête) client webdav
-* Sur Android: +
-[%step] +
- ** Un (bête) client webdav+
  
 ===== La recette ===== ===== La recette =====
Ligne 42: Ligne 37:
 Quel va être le parcours du PDF ? Quel va être le parcours du PDF ?
  
-Envoyé depuis Android vers le serveur web à l'aide du protocole webdav +  - Envoyé depuis Android vers le serveur web à l'aide du protocole webdav 
- Incron détectera qu'un nouveau fichier vient d'être "uploadé" et déclenchera l'exécution du script bash maison +  Incron détectera qu'un nouveau fichier vient d'être "uploadé" et déclenchera l'exécution du script bash maison 
- Le script maison vérifie qu'il s'agit bien d'un PDF et l'imprime via CUPS+  Le script maison vérifie qu'il s'agit bien d'un PDF et l'imprime via CUPS
  
 ===== Mise en place ===== ===== Mise en place =====
Ligne 50: Ligne 45:
 ==== Installation du serveur web ==== ==== Installation du serveur web ====
  
-* Installer Apache et CUPS: +  * Installer Apache et CUPS: 
-----+<code bash>
 sudo apt-get install apache2 cups sudo apt-get install apache2 cups
----- +</code> 
-* Activer le module webdav: +  * Activer le module webdav: 
-----+<code bash>
 sudo a2enmod dav sudo a2enmod dav
 sudo a2enmod dav_fs sudo a2enmod dav_fs
-----+</code>
  
 ==== Configuration du serveur web (1/3) ==== ==== Configuration du serveur web (1/3) ====
  
-Dossier de destination::+=== Dossier de destination ===
 Le dossier qui recevra les fichiers PDF sera ici /var/www/webdav. Ce dossier doit être créé et appartenir à Apache. Le dossier qui recevra les fichiers PDF sera ici /var/www/webdav. Ce dossier doit être créé et appartenir à Apache.
  
-----+<code bash>
 sudo mkdir -p /var/www/webdav sudo mkdir -p /var/www/webdav
 sudo chown -R www-data:www-data /var/www/webdav sudo chown -R www-data:www-data /var/www/webdav
-----+</code>
  
 ==== Configuration du serveur web (2/3) ==== ==== Configuration du serveur web (2/3) ====
  
-Configurer Apache et le module webdav::+=== Configurer Apache et le module webdav ===
 Il faut aussi l'indiquer à Apache dans le dossier sites-available par le fichier /var/www/webdav: Il faut aussi l'indiquer à Apache dans le dossier sites-available par le fichier /var/www/webdav:
  
-----+<code bash>
 Alias /webdav /var/www/webdav Alias /webdav /var/www/webdav
  
Ligne 85: Ligne 80:
  allow from 192.168.2  allow from 192.168.2
 </Location> </Location>
----- +</code>
  
 ==== Côté serveur web: configuration (3/3) ==== ==== Côté serveur web: configuration (3/3) ====
Ligne 92: Ligne 86:
 Il faut ensuite activer le module webdav et recharger la configuration de Apache: Il faut ensuite activer le module webdav et recharger la configuration de Apache:
  
-----+<code bash>
 sudo a2ensite webdav sudo a2ensite webdav
 sudo service apache2 reload sudo service apache2 reload
-----+</code>
  
  
 ==== Configuration de CUPS (1/2) ==== ==== Configuration de CUPS (1/2) ====
  
-Port d'écoute::+=== Port d'écoute ===
 Permettre d'accéder à CUPS depuis le réseau local en modifiant le fichier de configuration /etc/cups/cupsd.conf. Permettre d'accéder à CUPS depuis le réseau local en modifiant le fichier de configuration /etc/cups/cupsd.conf.
  
 Remplacer la ligne: Remplacer la ligne:
  
-----+<code bash>
 Listen localhost:631 Listen localhost:631
-----+</code>
  
 par: par:
  
-----+<code bash>
 Listen 631 Listen 631
-----+</code>
  
 ==== Configuration de CUPS (2/2) ==== ==== Configuration de CUPS (2/2) ====
Ligne 119: Ligne 113:
 Permettre d'accéder à l'interface d'administration de CUPS: Permettre d'accéder à l'interface d'administration de CUPS:
  
-----+<code bash>
 sudo cupsctl --remote-admin sudo cupsctl --remote-admin
-----+</code>
  
 Finalement, on redémarre CUPS: Finalement, on redémarre CUPS:
  
-----+<code bash>
 sudo systemctl restart cups sudo systemctl restart cups
-----+</code>
  
 ==== Ajouter l'imprimante ==== ==== Ajouter l'imprimante ====
Ligne 136: Ligne 130:
 Une fois le bon driver installé, reste à ajouter l'imprimante: Une fois le bon driver installé, reste à ajouter l'imprimante:
  
-* Ouvrir l'URL http://<ip_serveur_web>:631 +  * Ouvrir l'URL http://ip_serveur_web:631 
-* Choisir "Ajouter une imprimante" +  * Choisir "Ajouter une imprimante" 
-* Suivre les instructions de l'assistant+  * Suivre les instructions de l'assistant
  
 ==== Incron ==== ==== Incron ====
  
-* Installer incron et permettre à root de l'utiliser. Taper en tant que root: +  * Installer incron et permettre à root de l'utiliser. Taper en tant que root: 
-----+ 
 +<code bash>
 sudo su sudo su
 # apt-get install incron # apt-get install incron
 # echo root > /etc/incron.allow # echo root > /etc/incron.allow
----- +</code> 
-* Activer la surveillance du dossier de destination: + 
-----+  * Activer la surveillance du dossier de destination: 
 + 
 +<code bash>
 sudo incrontab -e sudo incrontab -e
----- +</code> 
-* Et ajouter: + 
-----+  * Et ajouter: 
 + 
 +<code bash>
 /var/www/webdav IN_MOVED_TO /home/wap/printtest.sh $@ $# /var/www/webdav IN_MOVED_TO /home/wap/printtest.sh $@ $#
-----+</code>
  
 ==== Le script bash ==== ==== 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. Du côté serveur, il ne reste plus qu'à copier le script bash suivant dans le dossier spécifié à l'étape précédente.
  
-[source,bash+<code bash>
-----+
 #!/bin/bash #!/bin/bash
 # Petit script pour imprimer un pdf en ligne de commande (trop fort GNU/Linux) # Petit script pour imprimer un pdf en ligne de commande (trop fort GNU/Linux)
Ligne 171: Ligne 169:
  rm "${file_name}"  rm "${file_name}"
 fi fi
-----+</code>
  
 ===== Côté Android ===== ===== Côté Android =====
Ligne 184: Ligne 182:
 Il est possible d'améliorer les choses: Il est possible d'améliorer les choses:
  
-* en implémentant une authentification pour l'envoi des PDF (mode digest) +  * 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 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)+  * imprimer des documents odt en faisant une conversion à la volée (mais nécessite l'installation d'une usine à gaz)
  
 ===== Merci ===== ===== Merci =====
atelier20161119-impression-pdf-android-run.1481828596.txt.gz · Dernière modification : 2016/12/15 19:03 de wap