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

Posté par  (site web personnel, Mastodon) .
Étiquettes :
10
22
déc.
2008
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
  • # (c) (r) (tm) debian-legal

    Posté par  (site web personnel) . É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  (site web personnel, Mastodon) . É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  . É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  . Évalué à 1.

          Il peut aussi utiliser la licence GNU AGPL v3.
          • [^] # Re: (c) (r) (tm) debian-legal

            Posté par  (site web personnel, Mastodon) . É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  . É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  . É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  . É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  . É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  . É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  . É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...
  • # ODF@WWW ?

    Posté par  (site web personnel) . Évalué à 5.

  • # unoconv

    Posté par  . É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  . É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.

Suivre le flux des commentaires

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