ODT 2 PDF : Migration de jodconverter vers unoconv

Bonjour à tous,

Bon, comme c’est ma 1ère « publication » sur ce forum, j’espère que je ne me trompe pas de catégorie…

Nous utilisons Dolibarr maintenant depuis 2009 dans notre entreprise.

J’avais mis en place la génération classique des PDF. Puis dans la version 3.4 j’ai décidé de faire nos propres « templates » ODT pour y joindre nos CGV (et autres, pour faire des jolies propositions commerciales de 20 pages :happy: ).

J’avais donc activé le module « odt2pdf » avec la génération d’un template ODT (fait sous LibreOffice)…

Le souci est que le PDF ne se générait jamais (le ODT oui) et j’avais des jolies erreurs JAVA (ce que j’aime JAVA… non en fait !) qui comme d’habitude ne sont compréhensibles que… pour JAVA ! Un peu de recherche (grâce au syslog Dolibarr) et hop je me rend compte que c’est jodconverter qui part en sucette… Pour info, mon Dolibarr est installé sur une Ubuntu 12.04 (LTS).

Que cela tienne ! Une petite recherche Google m’indique qu’un nouveau convertisseur ODT/DOC > PDF fonctionne plutôt pas mal : unoconv (http://dag.wiee.rs/home-made/unoconv/). 2/3 tests rapides et hop ça marche du feu de dieu !!!

Donc, je vous livre mes modifications (peut-être que cela pourra aider certain, voir à l’intégrer dans la nouvelle version).

1ère étape - j’installe unoconv (debian/ubuntu étant ma distri préférée, un simple :

aptitude install unoconv

et le tour est joué.
2ème étape - je modifie la « classe » PHP de odt :

#vi /usr/share/dolibarr/htdocs/includes/odtphp/odf.php

et je modifie ce bloc :

$name=str_replace(’.odt’, ‹  ›, $name);
if (!empty($conf->global->MAIN_DOL_SCRIPTS_ROOT)) {
$command = $conf->global->MAIN_DOL_SCRIPTS_ROOT.’/scripts/odt2pdf/odt2pdf.sh '.$name;
}else {
$command = '…/…/scripts/odt2pdf/odt2pdf.sh '.$name;
}

par ce mon nouveau bloc :

$name=str_replace(’.odt’, ‹  ›, $name);
$dirname=dirname($name);

	if (!empty($conf-\>global-\>MAIN_DOL_SCRIPTS_ROOT)) {
		$command = $conf-\>global-\>MAIN_DOL_SCRIPTS_ROOT.'/scripts/odt2pdf/odt2pdf.sh '.$name.' '.$dirname;
	}else {
		$command = '../../scripts/odt2pdf/odt2pdf.sh '.$name.' '.$dirname;
	}

Le but : envoyer au script odt2pdf.sh le répertoire de la propale (je ne traite que la proposition ici).

3ème étape - je modifie le script de génération du pdf :

#vi /usr/share/dolibarr/scripts/odt2pdf/odt2pdf.sh

Je remplace cette ligne :

jodconverter « $1.odt » « $1.pdf »

Par cette ligne :

unoconv --format pdf --output « $2 » « $1.odt »

Et là tout fonctionne ! Miracle ! Et avec une meilleure qualité de conversion que jodconverter (qui n’est plus maintenu malheureusement…).

Enfin, je me suis fait un petit script de démarrage pour que « libreoffice » démarre automatiquement et donc éviter de redémarrer le service « soffice » dans le script odt2pdf.sh.

Voilà, si cela a pu aider des personnes tant mieux ! Sinon et bien tant pis moi ça m’a aider :happy:

Mikael

5 « J'aime »

Bonsoir

Merci beaucoup pour ce retour d’expérience qui me permet d’avancer sur mes besoins Dolibarr.

Je bloque sur une erreur malgré un suivi scrupuleux de vos explications…
J’ai le message d’erreur : Message: order_pdf_create Error: ODT to PDF convert fail : Error running soffice: 77

Avez vous une idée.
Merci.

Francis

Bonjour Francis
Je vous conseille de lui envoyer un MP car Mikael ne passe plus sur le forum et risque donc de ne pas voir votre question :slight_smile:
@+