Pour une automatisation, jâai eu besoin dâouvrir LibreOffice depuis un script. Câest facile, la documentation traite de ce sujet.
Par exemple pour ouvrir lâĂ©diteur de texte, on utilisera :
libreoffice --writer /tmp/un_fichier_existant_a_editer.txt
Voir mĂȘme :
libreoffice --writer --norestore --nologo /tmp/un_fichier_existant_a_editer.txt
LâidĂ©e Ă©tant de continuer le processus dâautomatisation aprĂšs que lâutilisateur est fermĂ© LibreOffice.
Cependant un petit problĂšme survient si LibreOffice est dĂ©jĂ ouvert. En effet, le processus ouvert sera dĂ©tectĂ© et rĂ©utiliser pour lancer lâĂ©dition demandĂ©e. Du coup le processus dâautomatisation continu avant mĂȘme que lâutilisateur est commencĂ© Ă Ă©diter le document ouvert.
Dans ce cas, gros « fail »âŠ
La question est donc :
Comment ouvrir LibreOffice sans rĂ©utiliser une Ă©ventuelle fenĂȘtre prĂ©existante ?
La solution consiste à créer un environnement spécialement en utilisant : -env:UserInstallation=file:///tmp/test
ce qui implique que /tmp/test
soit un dossier existant.
Voici le code bash
correspondant :
file=/tmp/un_fichier_existant_a_editer.txt # « file » contient le nom du fichier a édité.
touch "${file}" # CrĂ©e le fichier sâil nâexiste pas (on sâassure dâavoir un fichier Ă©ventuellement vide)
tmpdir="$( mktemp -d --suffix=.myapp )" # CrĂ©ation dâun dossier temporaire
if [ -d "${tmpdir}" ] ; then
libreoffice -env:UserInstallation="file://${tmpdir}" --writer --norestore --nologo "${file}"
rm -fr "${tmpdir}" # Supprime le dossier temporaire
else
return 1 # Indique une erreur.
fi
Documentations utiles
- Starting the LibreOffice Software With Parameters
- Starting LibreOffice Software With Parameters â Documentation de la version 6.3
኿