odt2spip : création d’articles à partir de fichiers OpenOffice Writer

Ce plugin permet de générer un article SPIP à partir du téléchargement d’un fichier au format .ODT (OpenOffice ou LibreOffice Writer). Il gère la majorité des raccourcis typographiques, détecte les différents niveaux de titre et fait l’intégration des images automatiquement.

Voir aussi la documentation de la version 3
odt2spip v3+ : création d’articles à partir de fichiers textes

Important :
La transformation des fichiers ODT impose que l’extension XSL de PHP soit active sur le serveur web

Installation

  • téléchargez le zip du plugin correspondant à votre version de SPIP
  • pour l’installation et l’activation, suivez la procédure standard : cf la documentation officielle

Utilisation

Rien que de très simple : une fois le plugin activé, dans la page de gestion d’une rubrique vous trouverez une boite de dialogue qui permet de choisir le fichier à télécharger depuis votre ordinateur : « Créer un article à partir d’un fichier ODT ».

De la même manière, si vous souhaitez remplacer le contenu d’un article existant par celui d’un fichier odt, dans les pages des articles vous trouverez la boite de dialogue « Remplacer l’article par le contenu d’un fichier ODT ».

Une fois validé l’article est automatiquement créé avec le statut « proposé à la publication », si nécessaire le fichier ODT original est attaché comme document à l’article et le plugin vous bascule sur la page de cet article.

La transformation opérée par le plugin

Ce plugin ne fait qu’une transformation du contenu du fichier en code SPIP : il n’assure aucun miracle si votre fichier initial est construit de façon non-conforme aux règles de l’utilisation d’un traitement de texte et ne fera rien que vous ne puissiez reproduire avec les raccourcis typographiques de SPIP...

Un exemple de page générée à partir d’un fichier « type » : http://tice.espe.univ-amu.fr/demo/s...

Plus de précisions :

  • il est nécessaire d’avoir utilisé les styles pour définir les titres dans le fichier OpenOffice si vous voulez que le plugin les détecte. La conversion se fait selon les règles suivante (que les puristes passent leur chemin, il n’y a ici aucun respect des aspects sémantiques habituellement liés à l’utilisation des raccourcis typographiques !) :

    • si il existe au moins un paragraphe avec le style Titre, son contenu est utilisé pour générer le titre de l’article. Sinon c’est le Titre de niveau le plus important qui est utilisé : Titre 1 > Titre 2 > Titre 3... .
    • Le premier niveau de Titres est transformé en intertitres SPIP {{{Titre niveau 1 intertitre}}}(si Titre 1 n’existe pas, Titre 2 est utilisé à sa place, Titre 3 à la place de Titre 2, et ainsi de suite)
    • le deuxième niveau est mis en gras et séparé du restant par des sauts de lignes {{Titre niveau 2 en gras}}
    • tous les autres niveaux de titre sont passés en italique et séparés par des sauts de ligne {Titres de niveau 3, 4, 5... en italique}
  • si d’aventure vous aviez décidé d’utiliser le plugin Enluminure typographique ou le plugin Intertitres hiérarchisés qui définissent et utilisent des niveaux de titres supplémentaires (vade retro satanas !), odt2spip détecte leur présence et, automatiquement, utilise les raccourcis « enrichis » tels que {2{titre niveau deux}2} ou {4{titre niveau quatre}4} (ces raccourcis sont interprétés par ces 2 plugins).
  • Le plugin récupère les images intégrées dans le fichier d’origine à condition qu’elles soient au format jpg ou png ou gif (n’espérez rien si vous avez des fichier BMP ou TIFF intégrés !), les retaille pour approximer du mieux possible la taille qu’elles avaient dans le texte, les intègre comme documents SPIP et les place avec un raccourci de la forme <imgXXX|left> ou <imgXXX|right> ou <imgXXX|center> en fonction de la position à laquelle se trouvait l’image dans le texte d’origine.
    Attention ! pour que cette fonctionnalité soit opérationnelle, il faut que les images aient été intégrées dans le texte en utilisant les fonctions d’insertion d’image (menu « Insertion » > « Image » > « A partir d’un fichier... ») et non pas via un copié/collé du contenu de l’image dans le texte (qui génère un bitmap non récupérable).
  • Les formules mathématiques (rédigées à l’aide de l’éditeur d’équation natif d’OOo Writer ou des outils complémentaires tels l’excellent Cmath) sont en principe complètement gérées : le plugin génère le code LateX et le place dans une balise math : <math>$\frac{\sqrt{2x+9}}{4y-6}=\frac{\alpha 3}{\beta 2}$</math>
  • Les notes de bas de page sont gérées sans problèmes ni restrictions.
  • Pour les tableaux, pas de problème tant que vous n’essayez pas de faire des tableaux imbriqués (c’est à dire un tableau dans une cellule de tableau) : les fusions de cellules horizontales et verticales sont gérées en principe correctement.
  • Les listes à puce et numérotées, imbriquées ou non, sont en principe correctement gérées tant qu’elles ne sont pas interrompues par d’autres éléments (donc pas de reprise de numérotation d’une liste à la suivante).

Eléments non-gérés ou supprimés

  • Pour les tableaux et les listes le plugin ne gère pas les contenus ayant un style de Titre.
  • Les fioritures de style de texte sont limitées à celles autorisées par les raccourcis typographiques : gras et italique donc pas de texte de couleur ni avec des fonds colorés (beurk !), pas de variations de police ni de taille de texte (ce qui évitera que les rédacteurs pourrissent la charte graphique du site !)
  • Les en-têtes, pieds de page, index ou table des matières sont purement et simplement supprimés.
  • Les dessins (flêches, bulles et autres formes crées avec l’outil de dessin d’OOo Writer) ne sont pas (encore ?) supportés.

Utilisation de fichiers Word :

Pour passer d’un fichier Word (format .doc ou .docx) à un fichier odt utilisable par ce plugin, il est conseillé de faire la conversion (« enregistrer sous... » au format ODT) dans LibreOffice (ou OpenOffice) et non pas dans Word (vous avez déja vu un logiciel Microsoft respecter correctement des spécifications de format standard ???)

TO DO

  • Comme d’habitude, piètre graphiste que je suis, si quelqu’un avait le courage de faire un logo moins crasseux, il est le bienvenu ! Merci popojcb !
  • Ajouter la gestion des dessins SVG intégrés dans le fichier texte (avec une version jpg obtenue par conversion automatique pour les navigateurs qui supportent pas svg..)
  • Ajouter la gestion des équations mathématiques qui sont en MathML dans le fichier texte (si vous connaissez un convertisseur MathML -> LaTeX écrit en PHP et open-source, merci de me prévenir !) Merci Amaury Adon pour m’avoir trouvé la référence de la librairie XSLT « MathML 2.0 to LaTeX »
  • Ajouter une interface de configuration pour rendre paramétrable les conversion « imposées » pour les niveaux de titre...

Notes techniques

Le moteur de transformation du fichier odt est basé sur une feuille de style XSLT (/odt2spip/inc/odt2spip.xsl) qui opère sur le fichier content.xml extrait du fichier odt envoyé et dézippé dans un répertoire temporaire /tmp/odt2spip/XXX où XXX représente l’id_auteur en cours . Cette transformation permet de produire le titre et le texte de l’article. Les images sont également extraites du fichier dézippé et intégrées comme documents attachés à cet article (après un éventuel redimensionnement). Le répertoire temporaire de l’auteur (/tmp/odt2_spip/XXX) est effacé à la fin de l’opération.

Si vous souhaitez participer au développement de ce plugin ou faire des modifications du convertisseur XSLT, le répertoire /tests de ce plugin comprend le fichier ODT « type » ainsi que le fichier xml correspondant pour réaliser vos tests.

Si vous êtes sur un SPIP mutualisé, il se peut que vous ayez des problèmes de chemins vers les fichiers lors de la transformation xslt : voir ce fil de discussion pour une éventuelle solution (pour PHP 5) problème réglé avec la version [0.14].

Versions

[version 0.11] support des formules mathématiques

[version 0.12] choix du mode d’intégration des images (img / doc)

[version 0.13] choix de la langue de publication de l’article généré

[version 0.14] compatibilité avec la mutualisation du noyau SPIP 2.0

[version 0.15] compatibilité avec la barre typo V3 (cf #forum435614) et correction de l’incompatibilité des fonctions de révision du plugin snippets avec la version 2.1 de SPIP (cf #forum434725)

[version 2.0] compatibilité SPIP 3.0

[version 2.1] permettre la mise à jour d’un article à partir d’un fichier odt (cf #forum474504)

Ce plugin existe en 2 version :

  • La version « historique » (0.15.3, fichier odt2spip_19_20_21.zip) assure un maximum de compatibilité PHP / SPIP : php5 + spip 2.* , php5 + spip 1.9.2*, php4 + spip 2.*, php4 + spip 1.9.2*.
  • la version « actuelle » : (2.1.*, fichier odt2spip_30.zip) exclusivement PHP 5 + SPIP 3.*

Mille mercis à popojcb pour le logo, à mmmxvvv et D. Bard pour les fichiers de langue.

Librairie XSLT utilisée pour la conversion des formules MathML d’OOo vers LateX : MathML 2.0 to LaTeX de Vasil Yaroshevich http://www.raleigh.ru/MathML/mmltex...

Pour ce qui est du traitement des sauts de lignes/sauts de paragraphes, merci de lire http://contrib.spip.net/odt2spip-cr... avant de poster une réclamation ! : merci à dreline pour avoir réglé ce problème !

Discussion

69 discussions

  • 2

    Une remarque sur les raccourcis avec Enluminures typographiques V3.

    Désormais, pour les titres, au lieu de : {2{Le titre}2} c’est {{{**Le titre}}} qui est la notation à privilégier (même si l’autre est toujours en état de marche).

    Est-ce que tu pourrais modifier la conversion pour tenir compte de cela ?

    Merci d’avance !

    • la version 0.15 (http://zone.spip.org/trac/spip-zone...) intègre un post-traitement pour adapter la syntaxe à la version V3 tout en gardant la compatibilité avec les versions précédentes pour les SPIP encore en 1.9.2

    • Mist. GraphX

      Bonjour,

      J’ai l’impression que le même problème se pose avec la lame du couteau suisse : intertitre hiérarchisés, qui lui n’est pas pris en charge dans la conversion.

    Répondre à ce message

  • 5

    Bonjour ,

    Sous spip 2.1.2 et sarka 3.0 en test sur un server local , j’utilise votre plugin toutefois j’ai ce message :
    Conflit lors de l’édition

    Attention, les champs suivants ont été modifiés par ailleurs. Vos modifications sur ces champs n’ont donc pas été enregistrées.

    Veuillez contrôler ci-dessous les différences entre les deux versions du texte ; vous pouvez aussi copier vos modifications, puis recommencer.
    Echec lors de l’enregistrement du champ date_redac
    Différences :
    0000-00-00 00:00:00
    Votre version :
    La version enregistrée :
    Echec lors de l’enregistrement du champ date_modif
    Différences :
    0000-00-00 00:00:00
    Votre version :0000-00-00 00:00:00
    La version enregistrée :
    0000-00-00 00:00:00

    J’aimerais comprendre le pourquoi du comment , m’y suis pris comme une clinche ?

    • Je ne comprends pas vraiment en quelles circonstances apparaît ce message (il faudrait plus de précision pour pouvoir reproduire l’erreur !) mais en principe ce message est lié au plugin Crayons lorsque plusieurs auteurs essayent de modifier le texte d’un article simultanément...

    • bonjour,
      j’ai le même problème et il n’y a pas le plugin crayon

      voila le message d’erreur

      Echec lors de l’enregistrement du champ date_redac

      sinon très bon plugin

    • martingranger

      J’ai également ce même message, avec seulement les plugins « bandeau », « snippets » et « odt2spip » installés. Version de spip : 2.1.2
      L’erreur se produit après avoir cliqué sur le bouton « valider » lors de l’importation d’un document OpenOffice.

      PS je joins une capture d’écran (qui n’apparaît pas lors de la prévisualisation de ce message)

    • Il s’agit d’une incompatibilité dans la gestion des révisions entre le plugin snippets et la (nouvelle) fonction utilisée depuis SPIP 2.1.
      http://zone.spip.org/trac/spip-zone... devrait permettre de contourner ce problème. (merci de confirmer !)

    • martingranger

      Je viens d’installer le nouveau fichier, et le message d’erreur n’apparaît plus. Merci !

    Répondre à ce message

  • 2

    Bonjour,
    Et bravo pour cette contrib super utile et qui plus est, très bien documentée.
    Pour ma part, je recherche la possibilité de faire la même chose avec un fichier de stock de produits qui me vient ... d’Excel (10 000 références). J’ai cru comprendre que Excel ne parle pas gentiment à SPIP. Alors que dois-je faire (Ou plutôt, mon client, qui devra mettre à jour son listing en ligne régulièrement) ? Prendre le xls, le passer dans OpenOffice ? Est-ce que le plugin marche avec OOo Calc ?

    Je précise que le client ne souhaite pas faire de commerce en ligne mais simplement proposer la liste de son stock, d’où ma question subsidiaire : je veux une solution qui m’offre la possibilité de faire une recherche de produit dans cette liste par nom, référence ou famille. L’idée de transformer un fichier OoO en article SPIP me plait donc bien. Mais j’ai peut-être loupé d’autres solutions ?
    Merci d’avance.

    • Pour un fichier tableur l’intégration en tant qu’article est « native » dans SPIP à partir de la version 2.0 :

      • enregistrer le fichier au format CSV
      • si le tableau est le seul élément de l’article : attacher ce fichier CSV comme document à un nouvel article dont le texte sera vide : il sera alors directement affiché comme un tableau dans l’article
      • si l’article doit contenir du texte en plus du tableau, intégrer le document dans le texte de l’article avec le raccourci <emb123> (123 correspondant au n° du document).

      Voir le tutoriel sur http://tice.aix-mrs.iufm.fr/demo/sp...

    • Merci cy_altern ! Je suis passée à côté d’une évidence en me perdant dans la recherche de plugins. Je crois qu’il faudrait envisager très sérieusement un grand rangement des contribs, car on s’y perd vraiment maintenant : il y a quelques années que je pratique ce site mais je trouve qu’il est de plus en plus compliqué de trouver des solutions à ses problèmes : entre les contribs qui datent de mathuzalem, les (in)compatibilités avec les dernières versions, les fonctionnalités qui sont désormais intégrées dans spip ... un grand ménage s’impose !
      En tout cas merci pour cette réponse.

    Répondre à ce message

  • 5

    Bonjour,

    Plugin intéressant, merci.

    Malheureusement fonctionne mal dans mon cas : la plupart des mises en forme (le gras, l’italique et l’augmentation de la taille de la police notamment) ne sont pas pris en compte.

    Ex. sur Open Office

    TEST (gras seul)

    TEST ( italique sous-ligné)

    TEST (police agrandie en taille 16...)

    ... donne simplement sur Spip :

    TEST

    TEST

    TEST

    OK par contre pour les tableaux et les puces.

    • Par principe (limitations du code SPIP) l’augmentation de taille de la police, le souligné ou la combinaison gras plus italique ne peuvent pas fonctionner... En revanche gras ou italique sont OK.
      cf la doc ci-dessus : « Ce plugin ne fera rien que vous ne puissiez reproduire avec les raccourcis typographiques de SPIP »

    • OK mais j’ai hélas bel et bien un soucis avec ce plugin car, dans mon cas, même le gras seul et l’italique seul ne fonctionnent pas....

      TEST

      TEST

      donnent :

      TEST

      TEST

    • Non décidément rien à faire, le gras et l’italique ne sont pas reproduits dans l’article Spip :-(

      Si ca peut vous aider, je suis sur Open Office 3.2.1 (build 9502), Spip 2.1, Sarka spip 3

      Merci vivement pour toute aide.

    • Avec les mêmes versions de OOo et SPIP je n’ai aucun problème pour gras et italique...
      Ceci dit, pour que l’on puisse comparer les choses de façon « sérieuse », il faudrait que tu essaie avec le fichier « type » test_complet.odt livré avec le plugin dans le répertoire /test.
      Par ailleurs, dans les paramètres qui peuvent influencer le comportement du plugin il serait intéressant d’avoir la version de PHP qui tourne sur ton serveur ainsi que les version des composants de l’extension XSL de PHP (cf les infos accessibles par la page .../ecrire/ ?exec=info).

    • Alors là je n’y comprends plus rien... ca fonctionne nickel avec ton fichier « type » de test !

      En fait la raison est probablement que je suis parti d’un fichier de test avec le style par défaut : standard, où je n’ai fait que rajouter test et test sur 2 lignes...

      Dois-je comprends que le plugin ne fonctionne qu’avec des styles autres que « standard » ?

      En tout cas un grand merci pour ton aide.

    Répondre à ce message

  • 1
    OpenOffice

    Bonsoir à tous,
    Merci pour ce plugin qui semble ravir tout le monde. Hélas pour moi, soit je suis très fatigué, soit je ne trouve pas le lien « Créer un article à partir d’un fichier OOo Writer » dans les raccourcis.
    J’ai installé et activé le plugin odt2spip sur un SPIP 2.1.0 [15608]. J’ai également installé et activé le plugin snippets... :-(
    C’est grave docteur ?
    Merci à tous

    • Il faut aller dans n’importe quelle rubrique de la partie privée du site : le lien sera alors visible sous le bloc des raccourcis.

    Répondre à ce message

  • Excellent plugin. Ca fait longtemps que je recherchais quelque chose de ce type. Merci beaucoup pour tout ce travail !

    Répondre à ce message

  • 1

    Ce serait bien de pouvoir créer une brève par cette même méthode.

    • Pourquoi pas ? Si le cœur t’en dit, à priori il n’y aurait que quelques lignes à changer dans le fichier /odt2dpip/action/odt2spip_import.php pour générer une brève à la place d’un article (cf lignes 195 à 228).

    Répondre à ce message

  • Génial, c’est LE plugin qu’il me fallait, faire participer à un site SPIP des gens peu à l’aise avec l’informatique, c’est difficile, et l’interface d’écriture d’articles, bien que puissante dès lors que l’on fait l’effort de s’y plonger, déroute mes rédacteurs. Autant dire que là, c’est le bonheur. Une remarque tout de même, sur le site fait pour une copine (Ledily), je n’arrivais pas à faire fonctionner le plugin, j’ai épluché la doc, lu le forum jusqu’au bout et constaté avec amertume que je suis en SAFE_MODE_GID ON (et d’ailleurs en SAFE_MODE ON aussi, sur PHP Version 5.2.4...). J’ai tenté d’éplucher le plugin pour voir si je ne pouvais pas contourner le problème (SPIP s’est installé sans problèmes, de mémoire...), et je me suis rendu compte que c’était plutôt un problème de chemin (le / en fin de variable qui contient le chemin ne plait pas à mon hébergeur). Après quelques modifs, tout fonctionne parfaitement : mille mercis !!

    Répondre à ce message

  • 2
    Bailly Eric

    Bonjour
    je reviens vers vous pour mon pb d’import vers mon site spip.

    Aprés multitude d’essai, j’ai réussi à faire fonctionner le plugin.

    Comme demandé j’insère mes images par la fonction « insertion/images/a partir d’un fichier » je met en page sur OoO et ensuite j’envoie sur le site.

    Lorsque mon fichier *.odt n’as pas d’image tout fonctionne pour le mieux mais lorsque j’ai des images dans le texte, le même message me revient à chaque fois.

    de ce genre :
    Warning : getimagesize() [function.getimagesize] : Read error ! in /mnt/144/sda/8/4/eric.bailly2/plugins/auto/odt2spip_v0.1/action/odt2spip_importe.php on line 261

    Warning : Cannot modify header information - headers already sent by (output started at /mnt/144/sda/8/4/eric.bailly2/plugins/auto/odt2spip_v0.1/action/odt2spip_importe.php:261) in /mnt/144/sda/8/4/eric.bailly2/ecrire/inc/headers.php on line 145
    vérifier les droits d’écriture

    Le système a rencontré une erreur lors de l’écriture du fichier /mnt/144/sda/8/4/eric.bailly2/tmp_uploadTTN8u3/.. Veuillez, en tant qu’administrateur du site, vérifier les droits d’écriture sur le répertoire /mnt/144/sda/8/4/eric.bailly2/tmp_uploadTTN8u3.

    n’y a t’il pas un probléme de taille de fichiers images ou alors une limitation du nombre de ces images.

    pour l’instant j’envoie mon texte sans les images et je les ajoutent ensuite à la mains mais je dois dire que la mise en page en prend un coup.

    Dommage car ce plugins est vraiment excellent.

    merci par avance de votre aide sur ce sujet.
    cordialement
    Eric Bailly

    • vu le message d’erreur (et le fait que ce plugin fonctionne très bien sur la majorité des hébergements) il s’agit clairement d’un problème de droits sur les fichiers temporaires générés par php.
      Le chemin du fichier temporaire pointé dans l’erreur est par ailleurs très louche : il devrait être dans /tmp/odt2spip/ton_id_utilisateur : vérifie que les droits sur le dossier /tmp sont bien à 777 (ou 755 au minimum). Eventuellement, histoire de mieux cerner la cause de l’erreur, tu peux créer par FTP le sous-dossier /odt2spip/XYZ ou XYZ correspond à ton id_auteur, le mettre en 777 et voir ce que ça donne.
      Sinon, pour que je puisse éventuellement aller plus loin il me faut un compte admin sur le SPIP et un accès FTP (le tout envoyé sur [cy.alternATgmail])

    • Note après examen des fichiers odt utilisés : il ne s’agit nullement d’un problème du plugin mais du fait que les fichiers images ne sont pas présents dans le fichier odt.
      Pour toute erreur de ce style commencez par faire un dézippage du fichier odt et vérifiez qu’il existe bien un sous-répertoire /Pictures contenant les images à afficher dedans. Si ce n’est pas le cas, le problème se situe au niveau de votre traitement de texte : inutile de poster ici, nous ne pourrons rien faire pour vous !

    Répondre à ce message

  • Bonjour,
    Le test de ce plugin avec SPIP 2 me renvoie ce message d’erreur :

    Erreur...
    Fichier odt2spip_importe introuvable

    Pourtant le plugin a été complètement déposé et activé, de même que le plugin snippets.

    Avez-vous rencontré cette erreur auparavant ?
    Ou bien ai manqué quelquechose ?

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom