Fonctionnalité #13897
fermé[Conversion] Pouvoir choisir entre ImageMagick et GraphicsMagick
Description
Dans le cadre du SaaS courrier, j'ai pu constater qu'il y a une incompatibilité de Maarch Parapheur avec ImageMagick dans un environnement centos 8.
Pour rappel, centos 8 est la distribution choisit par Xelians pour le SaaS car elle dispose d'une environnement plus professionnel que Debian.
Le problème entre ImageMagick (version 6 et version 7) avec Maarch Parapheur sur centos 8 est la commande suivante :
convert -density 500x500 -quality 100 -background white -alpha remove '/opt/maarch/data/docservers/demo/MaarchParapheur/documents/2020/05/0001/0012_1897789596.pdf'[0] '/tmp/13626008450012_1897789596.png'
Au delà du fait que la conversion échoue, l'argument -density fait planter ImageMagick via un coredump et fait monter l'activité du processus jusqu'à ralentir fortement l'environnement.
Il est à noter qu'à contrario, la création d'imagette dans Maarch Courrier via l'argument -thumbnails fonctionne correctement.
Pour résoudre ce bug, il faut utiliser le fork d'ImageMagick, à savoir GraphicsMagick.
Son fonctionnement est légèrement différent, en comparaison, voici la commande à exécuter :
gm convert -density 500x500 -quality 100 -background white +matte '/opt/maarch/data/docservers/demo/MaarchParapheur/documents/2020/05/0001/0012_1897789596.pdf'[0] '/tmp/13626008450012_1897789596.png'
L'application de la transparance y est notamment différente.
Il faudrait pouvoir choisir dans MaarchParapheur via un param technique, xml ? tables parameters ? le programme à exécuter, ex :
src/app/convert/controllers/ConvertThumbnailController.php
if ($ImageMagick) {
$command = "convert -density 500x500 -quality 100 -background white -alpha remove "
. escapeshellarg($pathToDocument) . "[{$convertPage}] " . escapeshellarg("{$tmpPath}{$fileNameOnTmp}.png");
} elseif{$GraphicsMagick) {
$command = "gm convert -density 500x500 -quality 100 -background white +matte "
. escapeshellarg($pathToDocument) . "[{$convertPage}] " . escapeshellarg("{$tmpPath}{$fileNameOnTmp}.png");
}
Ce patch doit être appliqué à partir de la 20.03 pour que le SaaS Courrier puisse déployer du Maarch Parapheur.
Il faut également mentionner dans les prérequis et l'installation la nécessité de Graphics Magick sur Centos.
Autre point à noter, sur centos 8, il faut recommander php 7.3 uniquement car les images PNG sont mal gérées en 7.2 et en php 7.4 la librairie payante de fpdf n'est pas encore supportée.