Script createODT permettant la création de fichiers ODT en masse
J'utilise Openoffice pour faire des fiches de correction individuelles pour mes étudiants. Ces fiches contiennent mes remarques sur les exercices faits (ou pas) et un récapitulatif des cotes.
Un étudiant a accès à sa fiche quand il le désire et la conserve pendant tout son cursus et moi je mets à jour au fur et à mesure ... rien de bien exceptionnel, j'ai sans doute plein de collègues qui font le même genre de chose.
Ce qui est assez chiant répétitif c'est de devoir créer une fiche par étudiant en début d'année; je veux utiliser un style (donc un modèle), insérer la photo de l'étudiant, ses nom et prénom ... (c'est lourd) ... Il y a un moment où il faut arrêter de cliquer sur "Nouveau document" / Insérer photo, éditer le nom, ...
Il faut écrire un p'tit script qui fait le boulot :-)
Pour info donc le format odt est en fait une archive zip qui contient tout le merdier (le contenu, les styles, les images ...). Donc si je crée un document MODELE.ott
que je le dézippe, que je change l'image, que je change le prénom, le nom et que je rezippe (sous un autre nom), c'est bon.
À coup de dezip et de sed, on obtient un script permettant d'écrire
createODT Juste Leblanc ALG3ir /elsewhere/tasvutatete.png
Et je suis content ... j'ai perdu 2h pour en gagner moults ensuite.
Le script:
#!/bin/bash # # Script permettant de créer des fichiers ODT sur base d'un modèle. # # Le script remplace la photo, le prénom, le nom et le nom du cours # Voir le fichier MODELE-FICHE.ott # # Author Pierre 'Pit' Bettens (pbettens(à)heb.be) # Config FILE="/home/pit/home/fiches/MODELE_FICHE.ott" BASENAME='MODELE_FICHE.ott' YEAR='2010-2011' FROMDIR=`pwd` TMP=/tmp/odt if [ -d $TMP ] ; then rm -fr $TMP fi mkdir $TMP # Check params if [ ! $# -eq 4 ] ; then echo 'Args missing' echo 'Snopsis: createODT <fist name> <name> <course> <picture>' exit fi FIRSTNAME=$1 NAME=$2 COURSE=$3 PICTURE=$4 if [ ! -e $PICTURE ] ; then echo "I can't find file" $PICTURE exit fi # Check if file model exist if [ ! -e $FILE ] ; then echo 'File missing' echo 'I would like manage this file' $FILE exit fi ##cp $FILE $TMP cd $TMP ##unzip $BASENAME unzip $FILE -d $TMP sed "s/Prénom/$FIRSTNAME/" content.xml | \r sed "s/NOM/$NAME/" | \r sed "s/AAAA-AAAA/$YEAR/" | \r sed "s/COURS/$COURSE/" > contentTMP.xml mv contentTMP.xml content.xml # I must use odt filename PICTUREFILE=`ls Pictures` cp $PICTURE Pictures/$PICTUREFILE zip -r $FIRSTNAME$NAME.odt * mv $FIRSTNAME$NAME.odt $FROMDIR rm -fr $TMP
Commentaires
À première vue c'est mieux d'utiliser un ODT comme modèle plutôt qu'un OTT.
L'ott impose d'enregistrer avec un nouveau nom ... même si l'extension est odt.
Il faudrait trouver où se trouve l'info dans settings.xml et redonner un coup de sed ;-)