Chapitre 54. Export PDF
Pour l’export ancgl des pièces transformées en PDF et la Facturation
54.1. 1. ImageMagick
ImageMagick est installé , il faut attention d’avoir dans le /etc/ImageMagick-6/policy.xml (à partir ubuntu 16.04)
Installation d’imageMagick
apt install imagemagick
<policy domain="coder" rights="read|write" pattern="EPHEMERAL" /> <policy domain="coder" rights="read|write" pattern="URL" /> <policy domain="coder" rights="read|write" pattern="HTTPS" /> <policy domain="coder" rights="read|write" pattern="MVG" /> <policy domain="coder" rights="read|write" pattern="MSL" /> <policy domain="coder" rights="read|write" pattern="TEXT" /> <policy domain="coder" rights="read|write" pattern="SHOW" /> <policy domain="coder" rights="read|write" pattern="WIN" /> <policy domain="coder" rights="read|write" pattern="PLT" /> <policy domain="path" rights="read|write" pattern="@*" /> <policy domain="coder" rights="read|write" pattern="PS" /> <policy domain="coder" rights="read|write" pattern="EPS" /> <policy domain="coder" rights="read|write" pattern="PDF" /> <policy domain="coder" rights="read|write" pattern="XPS" />
54.2. 2. PdfTK
(Ubuntu 18.04) Si vous utilisez pdftk , il faudra corriger la configuration, le snap empêche son exécution, Pour vérifier
type pdftk pdftk est haché (/snap/bin/pdftk)
L’erreur est
Sorry, home directories outside of /home are not currently supported. See https://forum.snapcraft.io/t/11209 for details.
Solutions :
-
vous le recompilez, (source https://www.pdflabs.com/docs/install-pdftk-on-redhat-or-centos/)
-
ou vous utilisez une autre distro plus permissive
-
ou vous activez apparmor et www-data (propriétaire du service http) doit avoir son propre "home", qui sera utilisé , dans ce cas, il faudra travailler dans /home/www-data/tmp et changer la variable $_ENV['TMP']
54.2.1. Compilation de pdftk
Ubuntu 18.04
sudo apt install default-jdk-headless ant libcommons-lang3-java libbcprov-java
git clone https://gitlab.com/pdftk-java/pdftk.git
cd pdftk
mkdir lib
ln -st lib /usr/share/java/{commons-lang3,bcprov}.jar
ant jar
cp build/jar/pdftk.jar /usr/local/bin
cat <<EOF > /usr/local/bin/pdftk
#!/bin/bash
# Start PDFTK
/usr/bin/java -cp /usr/share/java/commons-lang3.jar:/usr/share/java/bcprov.jar:/usr/local/lib/pdftk.jar com.gitlab.pdftk_java.pdftk $@
EOF
chmod a+x /usr/local/bin/pdftk
Et config.inc.php
$pdftk="/usr/local/bin/pdftk";
54.3. 3. Apache
Avec Systemd, apache utilise un répertoire temporaire privé et donc l’appel pour convertir les fichiers en PDF et les estampiller ne fonctionne plus.
Pour changer cela , il faut avoir dans /etc/systemd/system/multi-user.target.wants/apache2.service
PrivateTmp=false
54.4. 4. Conversion de document
On utilise libreOffice pour convertir des documents en PDF avec Unoconv (libreOffice)
Dans le fichier config.inc.php, on doit avoir
define ('GENERATE_PDF','YES'); define ('OFFICE','unoconv ');
Plus d’information https://docs.moodle.org/38/en/Universal_Office_Converter_(unoconv)