[PDF] Moteur de création des PDF

Répondre
[Ben]
Messages : 17
Enregistré le : ven. juil. 28, 2017 1:52 pm

ven. juil. 28, 2017 9:44 pm

Bonjour,

Avant toute chose, je tiens à remercier l'équipe de développement, dès que j'aurai trouvé comment configurer le logiciel pour mes besoins, je financerai à la hauteur de mes - pour l'instant - maigres moyens ce très beau logiciel.

J'ajoute qu'une manière pour moi d'aider au développement est de rapporter ce qui me semblent être des bugs, n'y voyez pas un utilisateur mécontent et grincheux, que du contraire ;) !


Donc,

J'utilise un modèle particulier (dont je veux bien faire don à la communauté, ou aux développeurs de OpenConcerto) conçu par mes soins pour mes besoins (mention des remises, des frais de ports, de certaines infos, disséminées dans la facture).

Ce modèle fonctionne admirablement sauf que la police que j'utilise est l'Open Sans & l'Open Sans Light.

Lorsque OpenConcerto génère l'Ods, la prévisualisation ne se fait pas avec la bonne police, elle est remplacée par du Arial.

De même, lorsqu'OpenConcerto génère le PDF, il le génère avec une police de substitution.

Or, si j'ouvre le fichier ods situé dans mon dossier, il est est correctement formaté (notamment quand je ne souhaite pas que les cellules apparaissent si elles sont avec des valeurs nulles). Si je demande au moteur de LibreOffice de générer le PDF, il génère la facture exactement comme je souhaite l'envoyer à mes clients.

Pour l'instant, je suis obligé de générer le document, puis d'aller dans le répertoire des factures, et regénérer le PDF à la main (et enregistrer l'ods).

Voici un exemple de ce que je raconte :

Dans Open Concerto :
Image

Sortie PDF, moteur OpenConcerto :
Image

Sortie ods, dans Libreoffice 5.3 :
Image

Sortie PDF, avec le moteur de génération pdf de LibreOffice 5.3 :
Image

Pour résumer, le seul document formaté comme il se doit est le PDF créé grâce au moteur de LibreOffice 5.3.
Je trouve étrange que la note de bas de page n'apparaisse pas dans une prévisualisation, mais bon, si ce n'est que ça, je vivrai avec tant que mon modèle produit un pdf correct, c'est tout ce qui m'importe.

Voilà, désolé de peut-être pinailler sur de la cosmétique, mais la facture, c'est quand même une interface avec la clientèle à ne pas négliger (d'autant qu'on aime être payés :D , autant essayer de le faire avec élégance).

Merci !
Avatar du membre
guillaume
Messages : 2435
Enregistré le : ven. févr. 11, 2011 7:15 pm

sam. juil. 29, 2017 11:02 am

Bonjour,

Le moteur de rendu utilisé est jOpenDocument, moteur Open Source qui permet entre autre le rendu des fichiers ODS.
Il a quelques limitations car rendre le rendu 100% identique au moteur de LibreOffice revient à recoder LibreOffice... le genre de tâche TITANESQUE dans laquelle on ne se lancera pas.

En revanche, on peut très bien faire sorte que vos cas d'utilisations fonctionnent (police non standard, indentation, ...) en ajoutant ces fonctionnalités dans jOpenDocument. Facilement 2 jours de travail, reste à trouver qui les financera.

Cordialement,
Directeur technique d'OpenConcerto qui dans son temps libre s'occupe du forum.
Pour une assistance pro, nous sommes joignables à ILM Informatique contre quelques jetons.
Pensez aussi à lire le manuel !
[Ben]
Messages : 17
Enregistré le : ven. juil. 28, 2017 1:52 pm

sam. juil. 29, 2017 11:47 am

Et une option "scriptant" le fait d'ouvrir le document avec libreoffice ou openoffice, lancer la commande qui enregistre en pdf et ferme libre ou openoffice, sans session interactive ni GUI, même si c'est peu élégant, ne serait pas possible ?
[Ben]
Messages : 17
Enregistré le : ven. juil. 28, 2017 1:52 pm

sam. juil. 29, 2017 12:19 pm

Je me réponds à moi-même, après une brève recherche, il s'avère que LibreOffice et OpenOffice utilisent tous les deux un convertisseur intégré :

Par exemple sous windows :

Code : Tout sélectionner

C:\Temp>"C:\Program Files (x86)\LibreOffice 5\program\soffice.exe" --headless --convert-to pdf Facture_FACT-0026.ods
Ce code génère correctement le PDF, de la manière souhaitée et propre.

Je n'ai pas encore trouvé comment faire de "batch" (le caractère * ne fonctionne pas sous windows pour faire l'ensemble des fichiers ods d'un même répertoire par exemple) ... Mais dans la mesure ou OpenConcerto a connaissance du nom de fichier puisque c'est sa nomenclature, il pourrait utiliser cette commande au lieu d'utiliser jOpenDocument ?

Si l'installation de LibreOffice ou OpenOffice est "obligatoire", cette fonctionnalité est disponible depuis 2008 (on en apprend tous les jours) et permettrait de sortir un pdf "as intended".
Avatar du membre
guillaume
Messages : 2435
Enregistré le : ven. févr. 11, 2011 7:15 pm

sam. juil. 29, 2017 12:52 pm

On utilisait ça, il y a 10 ans...

Inconvénients :
- c'est lent
- ça oblige à installer LibreOffice/OpenOffice
- acceptable pour convertir en PDF mais pas pour imprimer (choix de l'imprimante etc...)
- résultat final différent du coup de la "preview" (jOpenDocument nous sert à créer les docs, les afficher, les imprimer et à créer le PDF)

La (seule) bonne solution c'est d'améliorer jOpenDocument.

Les amoureux des scripts pourront toujours automatiser la conversion avec LibreOffice...

Cordialement,
Directeur technique d'OpenConcerto qui dans son temps libre s'occupe du forum.
Pour une assistance pro, nous sommes joignables à ILM Informatique contre quelques jetons.
Pensez aussi à lire le manuel !
Sebiiiii
Messages : 71
Enregistré le : lun. mars 27, 2017 10:05 am

dim. juil. 30, 2017 12:02 pm

J'ai fait un truc comme ça pour un autre programme, je vous retrouve le script demain (sous Windows)
Ancien dev php/mysql - maintenance info, reconverti dans la récupération de données.
OC monoposte sur Windows - Utilisateur OC depuis Janvier 2017
HDDR49.fr
[Ben]
Messages : 17
Enregistré le : ven. juil. 28, 2017 1:52 pm

dim. juil. 30, 2017 12:33 pm

Merci du coup de main !
Je suis en train de m'arracher les derniers cheveux qu'il me reste avec ce script.

Manifestement l'exécutable de LibreOffice ne souhaite pas être lancé plusieurs fois "simultanément" pour traiter plusieurs fichiers, même avec du powershell, je galère (et pourtant, c'est mon métier, sysadmin).
Sebiiiii
Messages : 71
Enregistré le : lun. mars 27, 2017 10:05 am

lun. juil. 31, 2017 7:39 am

Voici "mon" script (modifié d'un autre, comme tout script on modifie un autre)

Code : Tout sélectionner

@echo off
cd c:\ods\

setlocal

FOR %%f IN (c:\ods\*.ods) DO CALL :process "%%~nxf"
goto :EOF

:process
set FICHIEROUT=%1
set FICHIERPDF=%FICHIEROUT:.ods=.pdf%

echo Fichier ODS : %FICHIEROUT%
echo Fichier PDF        : %FICHIERPDF%

"C:\Program Files (x86)\LibreOffice 5\program\soffice.exe" --headless --convert-to pdf %FICHIEROUT% --outdir c:\pdf\

del "c:\ods\%FICHIEROUT:"=%" /F

endlocal
goto :EOF
ici, je mets les ods et les pdf dans 2 dossiers différents, et je supprime les ods après. l'un comme l'autre est optionnel (--outdir et del)

essaie, car ma conversion faisait des ps en pdf avec ghostscript à la base.
Ancien dev php/mysql - maintenance info, reconverti dans la récupération de données.
OC monoposte sur Windows - Utilisateur OC depuis Janvier 2017
HDDR49.fr
Répondre