Journal : De "OpenDocument Text" vers "X/HTML" dynamiquement...

Posté par LeBouquetin () le 22 décembre 2008
10
Bonjour,

Le format de document OpenDocument est standard et ouvert ; les fichiers respectant ce standard sont donc potentiellement manipulables par n'importe quelle application. Notamment par des scripts PHP.

Mon objectif est simple : déposer par FTP des documents .odt sur un serveur web et les proposer à la lecture sous forme HTML via une conversion dynamique.

J'ai par ailleurs deux contraintes :

  • je souhaite un code x/html excessivement propre (pas de "html" façon OpenOffice ou Word et consorts),

  • je souhaite convertir ces documents dynamiquement, ce qui interdit tout utilitaire graphique.



J'ai donc fouiné sur le web et suis tombé sur différentes librairies/outils permettant d'envisager la manipulation de documents odt via PHP.

odt2xhtml :: http://odt2xhtml.eu.org/
Cet librairie génère du xhtml "propre", une démonstration en ligne est utilisable.
Je n'ai pas encore regardé le code PHP, mais ça devrait être bien puisqu'orienté objet en PHP.

Package PEAR OpenDocument :: http://pear.php.net/package/OpenDocument
Je n'ai pas essayé cette librairie, mais la dernière version est en alpha et date de juillet 2007, ce qui ne m'inspire pas vraiment.

Librairie odtPHP :: http://sourceforge.net/projects/odtphp/
Cette librairie permet de manipuler des fichiers .odt via PHP, mais est visiblement orientée vers la génération de documents.

Par ailleurs, l'installation ne fonctionnait pas directement sur ma Debian (problèmes d'include mineurs, mais problèmes tout de même ; pour faire fonctionner des "tests" qui ne sont pas très explicites)

Note : une librairie ods-php existe également pour manipuler les feuilles de calcul ; je n'ai pas du tout creusé.

Writer2LaTex :: http://www.hj-gym.dk/~hj/writer2latex/ (pas en PHP mais...)
Il se trouve que j'avais déjà utilisé la démonstration en ligne de odt2xhtml, mais ne parvenant pas à remettre la main dessus (jusqu'à maintenant), j'ai cherché un peu plus loin que "php" et je suis également tombé sur writer2latex qui permet de convertir des documents odt en latex ou xhtml. L'intérêt de ce logiciel est qu'il convertit de base en un format xhtml excessivement propre (qui reprend notamment le nom des styles définis dans le document d'origine) et que son comportement peut être personnalisé en définissant des options ou la feuille de style XSL utilisée pour la conversion du document.

Bilan
Le site pour lequel je souhaite implémenter cette conversion dynamique étant hébergé sur un VDS, il m'est possible d'installer writer2latex. Je n'ai pas encore tranché, je penche légèrement vers cette solution tant le code généré est propre. Néanmoins odt2xhtml reste une librairie générant du xhtml presque "parfait" (de mon point de vue), et l'intégration sera facilitée puisque c'est déjà du PHP.

Note : les documents que je souhaite publier sont uniquement textuels : pas de tableaux, pas d'images, pas de mise en page complexe. Pour cette raison, je pense que votre opinion et vos retours d'expérience pourraient être utiles.

Merci

> Lire le journal (19 commentaires, moyenne: 1,7).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

(c) (r) (tm) debian-legal

Posté par Moun's (page perso, ) le 22/12/2008 à 17:14. (lien). Évalué à 1.

reste à savoir si la licence de ce que tu vas modifier puis integrer dans ton code est compatible avec la licence de ton produit fini ... sous réserve que tu le diffuses.

si tu ne le diffuses pas et qu'aucun morceau réexploité n'est sous une licence type AGPL ou BSD à publicité ... tu n'auras pas trop de soucis ;)

  • [^]Re: (c) (r) (tm) debian-legal

    Posté par LeBouquetin () le 22/12/2008 à 17:27. (lien). Évalué à 1.

    C'est pour un site perso, donc :
    - soit il n'y a pas de diffusion,
    - soit ce sera une lib et du coup "peu importe la licence" (je m'adapte à GPL/LGPL/BSD pour ce genre de truc).

    Donc pas de soucis.

    • [+] [^]Re: (c) (r) (tm) debian-legal

      Posté par syj () le 23/12/2008 à 08:42. (lien). Évalué à -1.

      Tu es probablement au courant de ces histoires de licenses.
      C'est interessant de le rappelé pour éventuellement les nouveaux du libre qui nous lirait.

      Vu que c'est un site perso qui sera hebergé sur ton serveur:

      Si la lib est en GPLv2, tu n'es pas obligé de diffusé le code source.

      Si la lib est en GPLv3, tu seras obligé de diffusé le code à tes utilisateurs si il te le demande.

      Par contre si ton application tourne chez un hébergeur, pourrait-il te demander le code source ? (... enfin, çà reste du PHP , il en a pas vraiment besoin)

      • [^]Re: (c) (r) (tm) debian-legal

        Posté par vida18 () le 23/12/2008 à 09:25. (lien). Évalué à 1.

        Il peut aussi utiliser la licence GNU AGPL v3.

        • [^]Re: (c) (r) (tm) debian-legal

          Posté par LeBouquetin () le 23/12/2008 à 10:38. (lien). Évalué à 2.

          Je suis un peu au courant des licences, mais pas des "nouvelles" v3...

          Ca mériterait un journal, rien que pour résumer et comparer les licences "libres" les plus courantes...

          • [^]Re: (c) (r) (tm) debian-legal

            Posté par vida18 () le 23/12/2008 à 18:18. (lien). Évalué à 1.

            Pour résumer, la licence GNU GPL v3 est quasiment identique à la GPL v2 mais la FSF l'a amélioré sur certains points : protection contre la tivoïsation, les DRM, les brevets, comptabilité avec d'autres licences libres...

            Il y a aussi la AGPL et la CeCILL.

      • [^]Re: (c) (r) (tm) debian-legal

        Posté par Earered () le 23/12/2008 à 19:08. (lien). Évalué à 5.

        >Si la lib est en GPLv3, tu seras obligé de diffusé le code à tes utilisateurs si il te le demande.

        Ça c'est pour l'AGPL

writer2latex: un seul reproche, regarde du coté de XSLT

Posté par Amine Mokhtari (page perso, ) le 22/12/2008 à 18:28. (lien). Évalué à 1.

Je ne reproche à writer2latex qu'une seule chose : le fait qu'il ne sépare pas ce qui concerne la mise en page et le contenu. Pour l'instant (à ma connaissance), il génère un seul fichier dans lequel il met tout, et des fois c'est un peu n'importe quoi dedans. Mais bon tu peu tjrs lui demander de le convertir sans prendre en compte la forme, mais je ne pense pas que cela soit ce que tu veux faire.

Independement de cela, odt et xhtml sont tous deux des langages de balisages basés sur XML, il est donc possible d'utiliser directement XSL (ou XSLT directement) sans passer par un langage tel que PHP ou autres. Essaye de creuser de ce côté là aussi.

Références :
XSLT : http://fr.wikipedia.org/wiki/Extended_stylesheet_language_tr(...)

  • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

    Posté par thedude () le 22/12/2008 à 19:16. (lien). Évalué à 1.

    xslt marchera tres certainement pour la partie xhtml (quoique la feuille de transformation doit etre severement burnee), par contre pour la css, pas sur que ca passe, vu que les css ne sont pas du tout du xml.

    • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

      Posté par Pinaraf (Jabber id, ) le 22/12/2008 à 21:09. (lien). Évalué à 1.

      À ma connaissance, une traduction du fichier styles.xml et des styles de content.xml en css pourrait se faire en XSLT... Le problème c'est des choses que tu n'as pas en CSS, comme par exemple ""l'héritage"" des styles... Et ça pour l'implémenter tu pourras pas faire du XSLT. Et c'est une fonctionnalité très utilisée, par exemple dans les styles par défaut d'OpenOffice.org tous les titres héritent d'un style Titre de base...
      Sinon pour la transformation du contenu en XHTML avec du XSLT, j'pense pas que ça soit si compliqué pour du contenu de base (paragraphes, liens, listes...)
      Vu que tout est très proche du XHTML avec la séparation contenu/style...

      • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

        Posté par thedude () le 22/12/2008 à 21:29. (lien). Évalué à 1.

        Tu peux pondre du non xml avec XSLT? Du peu que j'en ai fait, il me semble que c'est pas possible (on avait meme du passer au XHTML dans notre cas, vu qu'on pouvait meme pas pondre un simple <br> avec).
        De tete, c'est un outil de transformation d'arbre XML en un autre arbre XML.

        Ensuite pour ce qui est de la feuille de transformation, les possibilite de mise en page etant tres differentes entre OOo et XHTML, oui, je pense que c'est pas si simple d'ecrire une feuille de transformation.

        Maintenant, si quelqu'un qui connaitb ien le sujet peut nous eclairer...

        • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

          Posté par Cyrille Pontvieux (Jabber id, page perso, ) le 23/12/2008 à 00:05. (lien). Évalué à 1.

          Tu définis un "output" dans ta feuille XSL, et tu peux très bien produire du texte simple "plain/text" ;-)
          Donc oui c'est possible de convertir le styles.xml en styles.css. Pour ce qui est de l'héritage, on peut le faire aussi en CSS, vu que, comme son nom l'indique, l'héritage est géré. Le plus dur c'est d'écrire une telle feuille de style XSL, mais ça doit être faisable (avec quelques pertes).

        • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

          Posté par Pinaraf (Jabber id, ) le 23/12/2008 à 00:10. (lien). Évalué à 1.

          Maintenant, si quelqu'un qui connaitb ien le sujet peut nous eclairer...
          Merci pour ta confiance.

          http://www.w3schools.com/xsl/el_output.asp : comme tu peux le voir ici, l'élément xslt:output a un attribut method, qui peut prendre pour valeur xml, html, text ou name.
          http://www.w3.org/TR/xslt : tu trouveras ici, en cherchant method="text", un exemple.

          Et l'écriture d'une feuille de transformation n'est pas difficile je pense, le mieux étant juste de prendre les fichiers inclus dans OpenOffice.org (dossier /usr/lib/openoffice/basis3.0/share/xslt/export/xhtml dans le cas d'un OOo 3.0 installé avec les paquets debian)

          • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

            Posté par thedude () le 23/12/2008 à 19:28. (lien). Évalué à 2.

            Merci pour ta confiance.
            Je voulais dire pour la partie odf, pas pour xslt, desole si on s'est mal compris.

        • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

          Posté par LeBouquetin () le 23/12/2008 à 10:11. (lien). Évalué à 2.

          Tu peux pondre du non xml avec XSLT?

          Tout à fait. Je bosse sur un logiciel qui transforme du XML au choix en XML, CSV ou SQL. Ceci à l'aide de feuilles de style XSL plutôt simples.

          • [^]Re: writer2latex: un seul reproche, regarde du coté de XSLT

            Posté par farvardin () le 24/12/2008 à 10:23. (lien). Évalué à 2.

            Quelqu'un vient de citer dans un journal récent ce projet, qui utilise en import le format markdown et peut exporter en xml opendocument et html : http://johnmacfarlane.net/pandoc/

ODF@WWW ?

Posté par gouchi (Jabber id, page perso, ) le 22/12/2008 à 20:37. (lien). Évalué à 5.

Le projet ODF@WWW peut t'intéresser :
http://odf-at-www.services.openoffice.org

également ODFXSLTRunner :
http://odftoolkit.org/projects/odftoolkit/pages/ODFXSLTRunne(...)

JODConverter :
http://www.artofsolving.com/opensource/jodconverter

Dio :
http://gitorious.org/projects/dio

unoconv

Posté par Mathieu (Jabber id, page perso, ) le 23/12/2008 à 00:42. (lien). Évalué à 2.

Unoconv peut répondre à tes attentes.
C'est du python qui va interroger un openoffice pour convertir un document X dans un format Y (tous les formats supportés par openoffice).
L'avantage est qu'en plus de l'ODT, tu pourras convertir différents formats vers X/HTML (*.pdf, *.doc, etc.). L'inconvénient est qu'il faut avoir un openoffice d'installé sur ton serveur.

C'est par ici : http://dag.wieers.com/home-made/unoconv/

xhtml direct sous openoffice

Posté par SLMitch () le 23/12/2008 à 08:40. (lien). Évalué à 3.

Avec Openoffice, tu as effectivement du html moche dans le enregistrer-sous, mais dans exporter, tu as du xhtml pas mal du tout (ou alors c'est l'inverse pour les menu, mais l'idée est la). Après, ca ne règle pas le problème que cela soit géré tout seul en batch sur le ftp par exemple.

Revenir en haut de page