IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Comment fusionner un document sur une datasource web en JSON ?


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 93
    Points : 95
    Points
    95
    Par défaut Comment fusionner un document sur une datasource web en JSON ?
    Bonjour,

    Démosthène est une application de gestion de cabinets d'avocats conçue en PHP sur une base de données Mysql, déployée sur un serveur LAMP
    La BD relationnelle organise les dossiers, qui contiennent les prestations (citations, requêtes, courriers, etc...) de l'avocat.
    Les prestations peuvent être dédiées à un justiciable déterminé, dont l'application connaît le nom, l'adresse, les références du dossier, ...
    Par le jeu des requêtes SQL relationnelles, je rassemble toutes les caractéristiques d'une prestation dans une seule requête, dont je convertis le résultat en une chaîne JSON

    Voici la méthode de la classe Prestation qui construit la chaîne JSON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     public function getCourrier()
     {
      $codeSql = 'SELECT DATE_FORMAT(t_prestations.heure,\'%d/%m/%Y\') AS jour, t_dossiers.nosRef, (autres champs...) FROM t_prestations LEFT JOIN t_dossiers ON t_prestations.dossier = t_dossiers.id LEFT JOIN t_avocats AS moi ON t_dossiers.avocat = moi.id LEFT JOIN t_cabinets AS monCab ON moi.cabinet = monCab.id WHERE t_prestations.id = ?';
      $querySource = $this->bdd->prepare($codeSql);
      $querySource->execute(array($this->id));
      $laSource = $querySource->fetchall(PDO::FETCH_ASSOC);
      $querySource->closecursor();
      return(json_encode($laSource));
     }
    Cette chaîne JSON est fournie par une page web,
    depuis une URL telle que https://www.monserveur.be/dmsthn/dat...php?prestId=25
    Cette page web construit la prestation 25 et affiche son JSON, par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo($laPrestation->getCourrier());
    Le navigateur affiche donc une réponse JSON telle que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [{"jour":"30\/11\/2018","nosRef":"PJ\/2017\/08\/001","monNom":"Patron","monPrenom":"Jacques","monTel":"04\/345.67.89","monFax":"04\/456.78.90","monGsm":"0475\/00.00.00","monEmail":"j.patron@avocat.be","monIbanPro":"BE41 0003 2601 8010","monIbanTiers":"BE00","monCabNom":"Law cost","monAdresse":"Rue Général de Gaulle, 8","monPostal":"4020","maVille":"Bressoux"}]
    Bien entendu, cette chaîne n'est accessible que si elle correspond à une prestation d'un dossier du client connecté et muni d'une $_SESSION en cours,
    identifié par son $_SESSION['clientId']
    Car on peut demander n'importe quoi, par $_GET['prestId'] : Never Trust User Input
    Sinon, message d'erreur, cela va de soi.
    Jusque là, OK, pas de problème, ça marche.

    Ma question :

    Maintenant, ce que je voudrais faire, c'est de permettre à un traitement de texte (MS-Word, LibreOffice) de demander et d'obtenir cette chaîne JSON, et de s'en servir comme datasource d'un document de fusion.

    La première difficulté est que le traitement de texte connaisse l'Id de la prestation (?prestId=X) dont il a besoin.
    Comment dire au traitement de texte de fusionner sur la chaîne JSON de la prestation 25 ?
    Peut-on l'appeler, depuis la page web, en lui passant l'identifiant prestId de la prestation sur laquelle fusionner ?
    faire une sorte de lien externe dans la page web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A href="LibreOffice?prestId=25">Fusion</A>
    Un peu comme on peut déjà faire un lien mailto vers un éditeur de mail.

    Ensuite, le traitement de texte va interroger l'URL, et en recevoir la chaîne JSON ci-dessus en réponse.
    Comment la considérer comme une datasource, et comment fusionner dessus ?

    Les avocats ont chacun leur panoplie de courriers personnalisés, à leur effigie, sur leur papier à entête.
    Impossible de personnaliser le logiciel aux desideratas de chacun d'eux.

    J'ai donc choisi de leur fournir les données dont ils ont besoin, et puis, qu'il les utilisent chez eux pour fusionner, sur tous les documents qu'ils créeront à volonté.
    Plutôt que d'intégrer un traitement de texte à Démosthène.

    Il existe des plugins JavaScript pour ce faire (comme celui que j'utilise ici, pour taper mon texte dans le forum de developpez.net), mais ils ne m'intéressent pas,
    car on ne sait pas y importer de modèles, on compose son texte dans un cadre blanc.

    Et même si on savait y importer des modèles, je ne souhaite pas importer, sur le serveur, tous les modèles possibles de tous mes utilisateurs.
    Ce qui impliquerait, ensuite, de mémoriser leurs courriers sur le serveur : lourd et dangereux, en cas de fuite / piratage, à cause du secret professionnel.

    Existe t'il une solution simple à mettre en oeuvre, compte tenu du profil littéraire des avocats, qui sont rarement des geeks ?

    Merci.
    Christian.

  2. #2
    Membre averti

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 300
    Points
    300
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je ne sais pas si je vais répondre à votre attente, mais vous pouvez regarder peut être du coté de py3o : les modeles sont construits en libre office stockés sur le serveur, vous envoyez une requete http avec le template, le json au serveur de reporting (py3o) et ça vous renvoit un pdf, odt .....
    ça marche plutôt pas mal
    https://xcg-consulting.fr/news/2015/...cation-metier/

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 93
    Points : 95
    Points
    95
    Par défaut Existe t'il une librairie analogue en PHP ?
    Merci Triaguae pour ta réponse, je vais explorer cette piste attentivement.

    Cependant, je n'ai jamais programmé en Python, et n'ai même pas idée de la manière dont on exécute un programme Python, ni l'importe dans une application PHP.
    Aussi, avant de me lancer dans cette voie, je voudrais savoir s'il existe une librairie analogue en PHP.

    Par exemple, il y a l'instruction mail(), qui crée et envoie un mail en PHP
    Il me faudrait une instruction Document(), par exemple, qui invoque un document de fusion, et lui passe des variables, telles qu'une string JSON contenant les paramètres et leurs valeurs.
    Est-ce que ça existe ?

    J'ai déjà importé des librairies PHP :
    Free PDF, pour créer des PDF dynamiques. Ca marche plutôt bien.
    PHP-Qr, qui crée des QR-codes.

    Mais PHP est très vaste, et je ne connais pas tout.
    Dans l'arsenal des librairies PHP, en existe t'il une qui appellerait un traitement de texte ?
    comme mail() qui crée un mail, en lui passant l'objet, le destinataire et le corps du mail.

    Perso, je n'ose pas me lancer dans du Python, surtout dans un domaine aussi pointu, sans aucune expérience en Python, pour une application destinée à des clients.
    Je me doute bien que je ne suis pas le premier développeur PHP à vouloir injecter des variables dans un document de fusion OpenOffice ou LibreOffice.

    Merci.
    Christian.

Discussions similaires

  1. Comment détecter un captcha sur une page web ?
    Par lucas.ren dans le forum Général Java
    Réponses: 1
    Dernier message: 02/01/2018, 18h45
  2. Comment mettre un Map sur une page Web (Map crée avec TileMap Editor?
    Par cosvocor dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 11/05/2017, 10h18
  3. Réponses: 5
    Dernier message: 22/01/2014, 10h14
  4. Vidéos en streaming sur une page web, comment ?
    Par norwy dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 19/06/2006, 21h07
  5. Réponses: 2
    Dernier message: 19/12/2005, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo