Universal Office Converter
Modèle:Convertisseurs de documents
Qu'est ce qu'unoconv?
"Unoconv" est un programme en ligne de commande qui est utilisé pour convertir entre différents formats de fichiers de documents Office. Il utilise une instance de LibreOffice pour effectuer la conversion et est utilisé par le Devoir pour convertir les documents en pdf afin qu'ils puissent être annotés. Si unoconv n'est pas installé, le seul impact est que les devoirs ne permettront les annotations que lorsque les étudiants téléchargeront un document pdf.
Les étapes requises pour installer unoconv sont différentes selon le système d'exploitation sur lequel vous avez installé Moodle.
Installer unoconv sur Linux
La version requise de unoconv est d'au moins 0.7. Selon votre goût de linux, cela peut être disponible dans votre gestionnaire de paquetages et vous pouvez l'installer directement avec :
Ubuntu 16.04 LTS
apt-get installer unoconv
Si votre gestionnaire de paquetages contient une ancienne version du paquetage, vous devrez trouver une version plus récente et l'installer manuellement (Tests Debian). Unoconv lui-même n'est qu'un script python, donc il a peu de dépendances.
Problèmes potentiels :
- Sur certains systèmes, le répertoire personnel de l'utilisateur apache est défini sur un dossier non existant. Cela peut entraîner l'échec de l'unoconv. Il y a 2 solutions à cela : l'une est de créer un répertoire personnel (accessible en écriture) pour l'utilisateur apache (comme /home/www-data). L'autre est d'exécuter un auditeur unoconv (décrit ci-dessous) comme un autre utilisateur que l'utilisateur apache (quelqu'un avec un répertoire personnel valide et écrit).
- Si vous utilisez toujours 14.04LTS, unoconv ne fonctionnera pas tel quel. Ce n'est peut-être pas la méthode la plus efficace, mais elle a fonctionné en installant unoconv (version 0.6) depuis le gestionnaire de paquetages comme ci-dessus. Vous devrez ensuite récupérer unoconv 0.7 de Github (https://github.com/dagwieers/unoconv), puis passer à la dernière version de libreoffice en utilisant le PPA (https://launchpad.net/~libreoffice/+archive/ubuntu/ppa). Pointez moodle sur la version Github de unoconv, vous devez modifier le fichier Python unoconv en changeant "python" dans la première ligne à "python3". Vous devez également changer les permissions sur le répertoire /var/www pour que l'utilisateur www-data puisse lui écrire (www-data doit écrire dans son répertoire home ce qu'il ne peut pas faire par défaut).
Sur Debian Stable, la méthode la plus sûre pour installer unoconv est d'utiliser Jessie-backports. Tout d'abord, activez la ligne backports repo dans /etc/apt/sources.list :
#### Jessie-backports #### deb http://ftp.debian.org/debian jessie-backports main
Ensuite, mettez à jour et installez unoconv depuis jessie-backports :
apt-get update apt-get install -t jessie-backports unoconv
Le forfait vous apportera toutes les dépendances nécessaires.
Ubuntu 14.04 LTS
1) Naviguez jusqu'au répertoire opt
cd /opt
2) Télécharger unoconv
sudo wget https://raw.githubusercontent.com/dagwieers/unoconv/master/unoconv
3) Modifier le fichier Python unoconv en changeant "python" dans la première ligne en "python3".
sudo nano /opt/unoconv
ex.
#!/usr/bin/env python3
4) Rendre unoconv exécutable
sudo chmod ugo+x /opt/unoconv
5) Ajoutez LibreOffice PPA à votre système et installez la dernière version.
sudo add-apt-repository ppa:libreoffice/ppa sudo apt-get update sudo apt-get install libreoffice
6) Modifier les permissions pour qu'apache puisse écrire dans son répertoire personnel
sudo chown www-data /var/www
7) Depuis votre navigateur, naviguez jusqu'à
Administration du site > Serveur > Chemin système et ajoutez le chemin vers unoconv
/opt/unoconv
- Remarque : si vous souhaitez préserver le chemin par défaut, ajoutez un lien symbolique vers /usr/bin:
sudo ln -s /opt/unoconv /usr/bin/
8) Naviguer jusqu'à
Administration du site > Plugins > Modules d'activité > Devoir > Plugin de Feedback > Annoter PDF > Tester le chemin unoconv.
Vous devriez voir :
"Le chemin unoconv semble être correctement configuré."
- Téléchargez le fichier de test converti au format pdf. (si le PDF ne se charge pas, assurez-vous que www-data peut écrire dans son répertoire personnel : /var/www)
CentOS / RedHat
Juste avant de commencer, vous pouvez envisager d'installer la dernière version LibreOffice 5.2 directement à partir de paquetages RPM, qui ne font pas partie de la distribution que vous utilisez. A partir de nov-2016, CentOS et RedHat 7.2 sont livrés avec OpenOffice 4.3 donc si vous n'êtes pas intéressé à utiliser cette version et souhaitez installer la dernière version 5.2 indépendante LibreOffice 5.2, veuillez supprimer tout paquetage openoffice que vous pourriez avoir sur votre OS en publiant :
yum remove openoffice* libreoffice*
Il est recommandé de choisir votre version localisée de libreoffice pour de meilleures conversions de documents.
yum install libreoffice libreoffice-pyuno git clone https://github.com/dagwieers/unoconv.git # copier cp unoconv/unoconv /usr/bin # ou lier unoconv à /usr/bin ln -s unoconv/unoconv /usr/bin/unoconv
Remarque : dépend de la version que vous installez, openoffice ou libreoffice, assurez-vous d'avoir installé le paquetage *-pyuno. (le paquetage headless est déjà compilé dans le noyau)
Assurez-vous qu'il est correctement configuré : http://your-moodle/admin/search.php?query=unoconv
Les serveurs de production devraient envisager d'exécuter unoconv en mode auditeur, voir Installation unoconv#Exécutez un auditeur unoconv ou suivre les instructions ci-dessous
vi /etc/systemd/system/unoconv.service
Puis copiez et collez la configuration suivante :
[Unité] Description=Unoconv auditeur pour les conversions de documents Documentation=https://github.com/dagwieers/unoconv Après=réseau.target remote-fs.target nss-lookup.target.target [Service] Type=simple Environnement="UNO_PATH=/usr/lib64/libreoffice/program" ExecStart=/usr/bin/unoconv --listener [Installation] WantedBy=multi-user.target
Puis activez et démarrez le service ci-dessus
systemctl enable unoconv.service systemctl start unoconv.service
Si votre selinux est activé, vous devez définir
#setsebool -P httpd_execmem on
Installer unoconv sur OS X
Téléchargez et installez LibreOffice pour Mac. Malheureusement, les nouvelles versions de LibreOffice ne sont pas compatibles avec unoconv pour mac et vous devrez installer LibreOffice 4.2 (lien de téléchargement direct https://downloadarchive.documentfoundation.org/libreoffice/old/4.2.5.2/mac/x86_64/LibreOffice_4.2.5.2_MacOS_x86-64.dmg).
Get the latest version of the unoconv python script. One way to do this is with http://brew.sh/ brew.
brew install unoconv
Si vous ne l'avez pas déjà fait, installez ghostscript. Une autre façon d'installer ghostscript : http://brew.sh/ brew
brew install ghostscript
Définissez les chemins vers unoconv et ghostscript dans Moodle (Administration du site > Serveur > Chemin du système). Si vous avez utilisé brew, ils seront tous les deux installés dans /usr/local/bin.
LibreOffice a besoin d'un accès en écriture au répertoire personnel des utilisateurs actuels pour créer des fichiers temporaires. Quand unoconv est exécuté en tant qu'utilisateur du serveur web (_www) il n'a normalement pas cette permission.
Il y a quelques façons de contourner ce problème, une étant de donner à l'utilisateur "_www" un accès en écriture à /Library/WebServer.
Une autre solution est de convaincre LibreOffice que ce répertoire utilisateur est ailleurs. Ceci peut être fait en insérant ce code dans le haut du script python unoconv. Code à insérer :
# Définir la maison à un dossier inscriptible. os.environ['HOME'] = '/tmp/'
Il doit être inséré à la ligne 36 immédiatement après la ligne "exitcode = 0".
Installing unoconv on Windows
Download and install LibreOffice for Windows. Open Office will work just as well, but the documentation for unonconv is set to Libre Office.
Download the latest version of the unoconv script from https://github.com/dagwieers/unoconv/releases (download the zip version).
From the downloaded zip file - extract the one file "unoconv-0.7\unoconv" (no file extension). This is the unoconv script - none of the other files in the package are required.
Rename the downloaded script to unoconv.py and copy it to a folder in either C:\Program Files or C:\Program Files (x 86)
Create a batch file in the same folder as unoconv.py name it something like unoconv.bat, it must be a batch file, with these contents:
@"C:\Program Files\LibreOffice (or Open Office #v)\program\python.exe" c:\unoconv\unoconv.py %*
Next, you have to Set paths in Moodle.
Login as admin and go to Site administration > Server > System paths
Set:
Path to Ghostscript (pathtogs) C:\Program Files\gs\gsversion\bin\gswin64c.exe
Do not use gswin32.exe or gswin64.exe, these are not command line programs - use gswin32c.exe or gswin64c.exe.
Set:
Path to Python (pathtopython) to C:\Program Files (x86)\OpenOffice v#(or Libra Office v#)\program\python.exe
Identify in the path whichever program you use and include the full exe name for both Ghostscript and Python.
Save the pathto statements and a green tick should appear if Moodle is communicating with the required files.
Go to Site administration > Plugins > Document converters and enable Unoconv then select Settings
Enter the path statement to
Path to unoconv document converter : C:\Program Files (x86)\unoconv\unoconv.bat
Include the full name of the .bat file.
Test ghostscript and unoconv are working correctly in the admin test pages "Site administration > Plugins > Activity modules > Assignment > Feedback plugins > Annotate PDF".
Run a unoconv listener
Unoconv utilises a client/server process when converting documents. By default, when there is no running server process - each time unoconv runs it will start a server process, send its request and shut down the server process when the request is complete. The drawback of this mode is that if 2 requests are submitted simultaneously - this can cause the first request to shutdown the server process when the second request is still in progress - and the second conversion request fails. A more robust way to configure unoconv is to start a server process at boot time, and/or run a script to monitor it and restart it if it crashes.
To start a unoconv listener at boot time - you need a start up script. Different operating systems and Linux distributions use different startup scripts - but here are some examples of startup scripts for different systems.
Upstart script for Ubuntu based systems
Init script for CentOS/RedHat 6.x
SystemD service script for CentOS/RedHat 7.x
Offload processing to a different server
Processing office documents can put increased load on your webserver, which may impact on the responsiveness of your site. If you are installing unoconv on a large site you may want to consider running unoconv on a server that is not also serving web requests.
How to do this:
Install unoconv on each webservers and the remote server following the installation instructions above.
Make sure unoconv is started at boot time on the remote server with the "--listener" argument and is monitored and restarted if it exits (see Debian init script for an example of how to do this). By default, unoconv will only listen on localhost (127.0.0.1): if you want to connect to the listener process from another server, you need to start the unoconv listener process with the "--server" argument too!
An example command for starting a listener on a remote server (0.0.0.0 listens on all interfaces):
unoconv --listener --server 0.0.0.0 --port 2002
Open the firewall port 2002 between the moodle webservers and the machine running unoconv.
Share the moodle data root between the webservers and the machine running unoconv. This folder must be mounted at the same path on all servers.
Install a wrapper for unoconv on the webservers that forwards the requests to the remote server. Example:
#!/bin/bash # Wrapper script for unoconv to forward processing. # Install to /usr/bin/unoconv-remote with 755 permissions /usr/bin/unoconv --server=<ip of remote server> "$@"
Configure the path to unoconv in the Moodle admin settings to point to this wrapper script.
Additional resources
GitHub dagwieers/unoconv has additional information on installation of unoconv and troubleshooting tips.
Troubleshooting
See also
- Is the unoconv installation a security risk? forum discussion