Error: ODT to PDF convert fail

Bonjour à tous

Je suis en train de tester une nouvelle install sous Windows 10
Install manuelle de MariaDB, PHP, Apache, Dolibarr v.12.0.3
Tout fonctionne correctement à ce niveau là

Je souhaite tester maintenant la conversion ODT vers PDF
En cherchant, j’ai vu qu’il fallait LibreOffice : dernière version installée sur le poste

J’ai ajouté l’option MAIN_ODT_AS_PDF avec la valeur libreoffice
Un modèle ODT dans le répertoire qui va bien paramètres activés pour trouver le modèle

Au moment de la génération du doc (propal pour l’instant), j’obtiens un message d’erreur

Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic (Vous pouvez fixer l'option $dolibarr_main_prod sur '1' pour supprimer quelques notifications):
Date: 20201204195653
Dolibarr: 12.0.3 - https://www.dolibarr.org
Niveau de fonctionnalités: 0
PHP: 7.4.13
Server: Apache/2.4.46 (Win64) PHP/7.4.13
OS: Windows NT XXXXXXX-SERV 10.0 build 19041 (Windows 10) AMD64
UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36

Url sollicitée: /doliv12/comm/propal/card.php?id=1
Referer: http://192.168.1.254:8090/doliv12/comm/propal/card.php?id=1&file=%28PROV1%29%2F%28PROV1%29_Personal_proposal.odt&entity=1
Gestionnaire de menu: eldy_menu.php

Modules/Applications: user, api, syslog, societe, propal, ticket, agenda, facture, accounting, banque, tax, product, service, categorie, fckeditor
Type gestionnaire de base de données: mysqli
Requête dernier accès en base en erreur: Aucune requête en erreur
Code retour dernier accès en base en erreur: Aucune requête en erreur
Information sur le dernier accès en base en erreur: Aucune requête en erreur

Message: Error generating document for CommonObject. Error: ODT to PDF convert fail (option MAIN_ODT_AS_PDF is libreoffice, command was soffice --headless -env:UserInstallation=file:"//E:/AMP_Donnees/Doliv12/documents/users/temp" --convert-to pdf --outdir "E:/AMP_Donnees/Doliv12/documents/propale/(PROV1)" "E:/AMP_Donnees/Doliv12/documents/propale/(PROV1)/(PROV1)_Personal_proposal.odt", retval=1) :

J’en comprends qu’il ne trouve pas LibreOffice
Après quelques recherches, j’ai rajouté le chemin d’accès vers C:\Program Files\LibreOffice\program\ dans le PATH de Windows, mais cela ne change rien, y compris après redémarrage du PC

J’ai sûrement oublié quelque chose mais quoi ?
Une aide serait bienvenue :wink:

Cordialement
Eric

Je n’ai pas (encore) regardé le code source, mais j’ai déjà constaté que, parfois, des appels à des programmes externes ne fonctionnent pas nativement sous Windows (je n’ai plus d’exemple en tête).

Ça pourrait par exemple être à cause de l’extension .exe (mais je spécule et je ne regarde pas le code).

[edit]
J’ai jeté un coup d’œil rapide au fichier htdocs/includes/odtphp/odf.php (je pense que c’est la ligne 810). Je ne sais pas si c’est lui qui est appelé, mais si oui, ça pourrait être intéressant de vérifier quelle est la commande appelée pour la tester dans la ligne de commande de Windows (cmd) et regarder ce qui sort.

Sinon, ma spéculation de tout à l’heure (sur l’extension .exe) ne tient sans doute pas la route…

1 « J'aime »

@fmortgat
Bien vu : j’ai récupéré la ligne de commande dans les logs d’erreur Dolibarr pour l’exécuter directement sous CMD Windows

J’obtiens un message d’erreur : « Impossible de lancer l’application. Le fichier de configuration PF\LibreOffice\Program\bootstrap.ini est défectueux »

Donc Dolibarr trouve bien LibreOffice mais LibreOffice ne veut pas se lancer !
Petite recherche sur le net, j’ai modifié le bootstrap.ini
UserInstallation=SYSUSERCONFIG/LibreOffice/4
remplacé par
UserInstallation=file:///C:/ProgramData/LibreOffice/4

Mais il faut aussi modifier le fichier cité de Dolibarr :
htdocs/includes/odtphp/odf.php

En l’occurrence pour moi c’est ligne 809 (mais on n’est pas à une près :wink: )
J’ai supprimé : -env:UserInstallation=file:
La ligne est donc devenue :
$command ='soffice --headless "//'.$conf->user->dir_temp.'" --convert-to pdf --outdir '. escapeshellarg(dirname($name)). " ".escapeshellarg($name);

La conversion d’exécute sans problème, le PDF est bien présent
Par contre, l’ODT reste : à mon sens cela prend de la place HD pour rien

J’ai créé un autre fil pour en discuter si quelqu’un a une soluce à me proposer :

En attendant, merci, ca convertit nickel :slight_smile:

Cordialement
Eric

1 « J'aime »

Bonjour,

Je fais ce post car je suis à la recherche d’un moyen pour créer mes propres templates au format ODT pour les passer automatiquement au format PDF. Mes recherches m’ont mené jusqu’à ce post qui m’a permis de mieux comprendre ou je mets les pieds. (Petite précision, je fais mes essais sur une machine virtuelle Windows 10).

J’ai rigoureusement suivi chaque étape mais un problème subsiste. Lorsque je lance le rendu PDF sur Dolibarr un message d’erreur apparaît. Je copie donc la commande et la colle dans ma commande (CMD), un message d’erreur apparaît :

« Error : Source file could not be loaded »

J’ai tenté de changer le répertoire de recherche dans la commande mais ça ne me mène à rien. Quelqu’un aurait-il une idée ou une méthode différente qui m’aurait échappé pour parvenir à mes fins ?

Merci d’avance :wink:

Pour vous répondre convenablement, il faudrait voir la commande en question et avoir quelques détails sur l’arborescence de vos fichiers… Si LibreOffice n’arrive pas à charger le fichier source, ça peut être (entre autres) parce que le fichier source n’existe pas à l’emplacement demandé, parce qu’il n’a pas la permission de l’ouvrir ou parce que le fichier n’est pas au bon format.

Bonjour,

Merci de m’avoir répondu.

Voici ci-dessous les différentes étapes que j’ai mis en œuvre. Ainsi que le message d’erreur en question.

J’ai dû faire une seule image car je n’ai le droit de partager qu’un seul fichier en tant que nouvel utilisateur. J’espère que ce sera lisible.

Bonjour,

Si vous essayez de naviguer manuellement (dans la console) dans le répertoire :

cd c:/dolibarr/dolibarr_documents/commande/CO2104-0001
dir

Y a-t-il bien un fichier nommé CO2104-0004_order.odt dans le répertoire ?

Si oui, essayez (dans la même session) :

soffice --headless "c:/dolibarr/dolibarr_documents/users/temp" --convert-to pdf --outdir "./" "./CO2104-0004_order.odt"

Pour voir si vous avez le même message d’erreur (en toute logique, ça devrait mettre le même message, mais c’est juste pour être sûr).

Le fichier est bien présent en utilisant la console et le message d’erreur persiste lorsque j’exécute la commande comme prévu.

Et en ouvrant directement (par double-clic dans le gestionnaire de fichiers) le document odt avec libreoffice, est-ce qu’il arrive à l’ouvrir ? Sinon, peut-être qu’il est tout simplement invalide.

Si le document odt est invalide, il est parfois possible de déterminer la cause en l’ouvrant en tant qu’archive zip (les documents odt sont des fichiers zip qui contiennent essentiellement des fichiers xml). Ces fichiers xml renferment parfois la réponse (par exemple si des balises sont mal formées ou mal fermées).