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:00] 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 ======
 Philippe Wambeke - LoliGrUB Philippe Wambeke - LoliGrUB
-:backend: revealjs 
-:revealjs_theme: league 
-:revealjs_control: false 
  
 ===== L'objectif ===== ===== L'objectif =====
Ligne 14: 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 =====
  
-=== 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 45: 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
- +
-[NOTE.speaker] +
--- +
-Expliquer brièvement l'extension http:// webdav +
---+
  
 ===== Mise en place ===== ===== Mise en place =====
  
-=== 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 93: Ligne 80:
  allow from 192.168.2  allow from 192.168.2
 </Location> </Location>
-----+</code>
  
-[NOTE.speaker] +==== Côté serveur web: configuration (3/3) ====
--- +
-Montrer l'arborescence des dossiers /etc/apache2 +
-ATTENTION: si apache version 2.4, le fichier webdav doit se nommer webdav.conf !!! +
--- +
- +
-=== Côté serveur web: configuration (3/3)+
  
 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>
  
-[NOTE.speaker] 
--- 
-Oui, même sur debian 8 et systemctl, la commande service fonctionne ! 
--- 
  
-=== 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) ====
  
 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 ====
  
 En fonction de la marque et du modèle d'imprimante, il peut être nécessaire d'installer des pilotes supplémentaires. En fonction de la marque et du modèle d'imprimante, il peut être nécessaire d'installer des pilotes supplémentaires.
Ligne 153: 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: +
----- +
-/var/www/webdav IN_MOVED_TO /home/wap/printtest.sh $@ $# +
-----+
  
-[NOTE.speaker] +  * Et ajouter:
--- +
-Expliquer brièvement la syntaxe et les différents modes supportés par incron:+
  
-* IN_ACCESS File was accessed (read) +<code bash> 
-* IN_ATTRIB Metadata changed (permissions, timestamps, extended attributes, etc.) +/var/www/webdav IN_MOVED_TO /home/wap/printtest.sh $@ $# 
-* IN_CLOSE_WRITE File opened for writing was closed +</code>
-* IN_CLOSE_NOWRITE File not opened for writing was closed +
-* IN_CREATE File/directory created in watched directory +
-* IN_DELETE File/directory deleted from watched directory +
-* IN_DELETE_SELF Watched file/directory was itself deleted +
-* IN_MODIFY File was modified +
-* IN_MOVE_SELF Watched file/directory was itself moved +
-* IN_MOVED_FROM File moved out of watched directory +
-* IN_MOVED_TO File moved into watched directory +
-* IN_OPEN File was opened +
---+
  
-=== 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 206: Ligne 169:
  rm "${file_name}"  rm "${file_name}"
 fi fi
-----+</code>
  
 ===== Côté Android ===== ===== Côté Android =====
Ligne 214: Ligne 177:
 L'impression du PDF se fait simplement en "uploadant" le fichier PDF sur le serveur web. L'impression du PDF se fait simplement en "uploadant" le fichier PDF sur le serveur web.
  
-[NOTE.speaker] 
--- 
-Expliquer qu'il est asssez difficile de trouver un client webdav libre sur Android. Et que le client en ligne de commande sous GNU/Linux s'apelle cadaver ;-). 
--- 
  
 ===== Pour aller plus loin ===== ===== Pour aller plus loin =====
Ligne 223: 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.1481828435.txt.gz · Dernière modification : 2016/12/15 19:00 de wap