Universal Office Converter

De MoodleDocs
Aller à :navigation, rechercher

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

Launchd script for OS X

Init script for Debian

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