#!/bin/bash AIDE=" Ce script est censé convertir les onglets d'un tableur excel \n ou libreoffice calc en une liste de fichiers pdf portant les noms des onglets \n Un pdf pour chaque onglet. \n Utilisation : \n > $(basename $0) mon_fichier.xls \n ou \n > $(basename $0) mon_fichier.ods \n " checkrequirements () { command -v command >/dev/null 2>&1 || { echo "ATTENTION> \"command\" non trouvée. Vérification abandonnée !" exit 1 ; } for requirement in ${_needed_commands} ; do echo -n "Vérifie \"$requirement\" ... " ; command -v ${requirement} > /dev/null && { echo "ok" ; continue ; } || { echo " abscent !" ; _return=1 ; } done [ -z "${_return}" ] || { echo "ERR > Il manque des prérequis." >&2 ; exit 1 ; } } if [ -n "$1" -a -f "$1" ]; then ext=$(echo $1 | sed -e 's/^.*\.//g') if [ $ext = "xls" ]; then ods=$(echo $1 | sed -e 's/xls/ods/g') echo "produit $ods" libreoffice --headless --convert-to ods "$1" elif [ $ext = "ods" ]; then ods=$1 else echo "$1: extension $ext non gérée" exit 1 fi pdf=$(echo "$ods" | sed -e 's/ods/pdf/g') echo "produit $pdf" if [ -f "$pdf" ]; then rep="E" echo "$pdf existe déjà: Ecraser =E , Abandoner = A, Backup=B" read rep case $rep in [E]) libreoffice --headless --convert-to pdf "$ods" ;; [A]) echo "abandon demandé -- bye " exit 2 ;; [B]) mv $pdf $pdf.$(date +%Y%m%d-%H%M%S).bak libreoffice --headless --convert-to pdf "$ods" ;; *) libreoffice --headless --convert-to pdf "$ods" ;; esac else libreoffice --headless --convert-to pdf "$ods" fi echo $pdf unzip "$ods" content.xml sed -e 's/>/>\n/g' content.xml >content1.xml pdfseparate "$pdf" bul-%d.pdf grep "table:name=" content1.xml | sed -e 's/"/[/1' | sed -e 's/"/]/1' | sed -e 's/^.*\[//g' | sed -e 's/\].*//g' |sed -e 's/&.*;//g'|sed -e 's/$/.pdf"/g' |sed -e 's/^/"/g' | grep -v Excel | grep -v Feuil > "$ods".list ls bul-* | sed -e 's/-\(.\)\./-0\1./g' | sed -e 's/^/mv /g' | sort > "$pdf".list paste "$pdf".list "$ods".list | sed -e 's/-0/-/g' > move.list chmod +x move.list ./move.list rm content*.xml rm *.list else echo "_$1_ non trouvé" echo "que voulez vous faire ? H = Aide/usage , R = Voir les prérequis, Q = Quitter" read rep case $rep in R) _needed_commands="ls echo libreoffice sed grep pdfseparate paste" ; checkrequirements ;; H) echo -e $AIDE ;; *) ;; esac fi