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.*
Discussions par date d’activité
69 discussions
I installed both the plugins.
I got the following error message :
Fatal error : Call to undefined function : spip_abstract_insert() in /web/htdocs/www.scenaillustrata.com/home/public/ecrire/inc/ajouter_documents.php on line 212
Do you have any suggestion ?
which version ?
be more precise : in wich page did you got the error ? (give the url please)
The versions of the plugin are :
Versione : 0.11 | stabile
Cartella : odt2spip_v0.1
Snippet : 0.1 | in prova
I tried to load a file .odt through
Fichier ODT à utiliser :
I received the page :
http://www.scenaillustrata.com/public/spip.php?action=odt2spip_importe&arg=id_rubrique=5&hash=0df697e9038d89e5637542123ca85214&redirect=ecrire%2F%3Fexec%3Darticles%26id_article%3D
The text is the description of the error :
Fatal error : Call to undefined function : spip_abstract_insert() in /web/htdocs/www.scenaillustrata.com/home/public/ecrire/inc/ajouter_documents.php on line 212
The url of my website where is running SPIP 1.9.2g is :
http://www.scenaillustrata.com/public/
I hope this information help to clarify.
Regards
this a pretty obvious error... Did you reproduce it with the ODT test file (which is in the plugin’s directory : /odt2spip/tests/test_complet.odt) ?
If you got the same error with this file, could you envisage gave me an author access to your SPIP and an FTP login with write-permissions in the plugin’s directory (cy_altern at yahoo.fr) ?
corrigé par la révision 27527 et disponible dans le zip de cette nuit
Répondre à ce message
Je suis allé voir ce qui se passait à la ligne 210… Elle appelle, pour spip_version > 2.05, la fonction
effacer_repertoire_temporaire($rep_dezip)
qui n’est définie nulle part, d’où l’erreur. J’ai pour le moment mis en commentaire les lignes 210, 211 et 212, ce qui fait que le répertoire n’est pas effacé mais, comme l’importation suivante écrase la précédente, c’est un moindre mal et je peux toujours effacer le répertoire par ftp de temps en temps.
affaire à suivre, merci
Est tu certain d’avoir la dernière version du plugin ? Dans tous mes tests la suppression du répertoire de dézippage fonctionne très bien (SPIP version 2.0.5 et 2.0.6)...
pas du tout ! la fonction effacer_repertoire_temporaire() est une fonction du core de SPIP, définie dans /inc/getdocument.php
si le problème persiste malgré une mise à jour de version du plugin et/ou de SPIP, tu devrais faire cette modif du code à la ligne 210 :
ainsi tu n’aura plus le message d’erreur et le répertoire sera supprimé.
I experience the same probleme
odt2spip : 0.11 [27246]
Spip Version SPIP 2.0.5 [13790]
Même erreur spip 2.0.6, odt2spip v1 et snippet téléchargés aujourd’hui.
Je ne reproduis pas votre erreur mais j’ai quand même tenté de faire une petite correction... Commité en [27488] (http://zone.spip.org/trac/spip-zone...) et disponible dans le zip de cette nuit.
Pour tous ceux qui ont eu le bogue : merci d’essayer cette révision et de faire un retour de test ici...
Répondre à ce message
ReBonjour,
Merci pour les renseignements sur le svn, je resterai donc à la version 0.1, qui ne marche pas si mal puisque, après avoir délivré le message suivant :
Fatal error : Call to undefined function : effacer_repertoire_temporaire() in /mnt/112/sdc/4/e/wvorg/hoepffner/spip/plugins/auto/odt2spip/action/odt2spip_importe.php on line 210
en faisant retour sur le navigateur, on obtient une page tout à fait utilisable (titres, gras, italique et note de bas de page). C’est surtout pour le confort que cela gène.
De toute façon merci, le système est nettement plus pratique que celui à partir de word (malheureusement les rédacteurs s’obstinent à soutenir microsoft…)
Répondre à ce message
Bonjour,
je viens d’essayer ce plugin et lors du téléchargement du fichier OpenOffice j’ai une erreur « Fichier odt2spip_importe introuvable ». J’ai vérifié ce fichier est pourtant présent.
Quelqu’un sait-il pourquoi j’ai cette erreur ?
[le message suivant à été effacé pour case de flood de forum : on ne colle pas 250 lignes de retour d’erreur dans un message de forum !!! ça va pas non ?]
18 mars 22:01 , par Alain
odt2spip : création d’articles à partir de fichiers OpenOffice Writer
Oui, j’ai exactement la même chose, après une page de messages d’erreur :
le creer si il n’existe pas $base_dezip = $p[0]._NOM_TEMPORAIRES_INACCESSIBLES.« odt2spip/ » ; // avec /
[...suivi des 250 lignes de la fin du fichier odt2spip_importe.php...]
La, tu dois avoir un problème dans le fichier en question, par exemple une corruption du zip lors du téléchargement ?
Regarde le code php du fichier si il ne présente pas une anomalie (???), remplace le par une version re-téléchargée...
Dans tous les cas, j’ai besoin de savoir la version *précise* de SPIP et la version de PHP (.../ecrire/ ?exec=info) pour faire un diagnostic !
heu... ben là, comme ça, avec aussi peu de détail, y’a *aucune chance* que je puisse faire quelque chose pour ton cas !
Il faudrait indiquer au minimum la version *précise* de SPIP et la version de PHP (.../ecrire/ ?exec=info) pour faire un diagnostic... + vu qu’il semblerait qu’il y ait un problème de chemin vers un fichier, le chemin du répertoire d’installation du plugin dans le SPIP.
Répondre à ce message
Bonjour,
Je suis intéressé par la dernière version en svn, pouvez-vous me communiquer les identifiants pour la charger ?
Merci par avance.
Jacques Hoepffner
le SVN de la zone est accessible en lecture librement (donc pas besoin de code d’accès) : svn://zone.spip.org/spip-zone/_plug...
Ceci dit, pour l’instant la version 0.2 n’apporte *rien* de plus que la version 0.11 si ce n’est le fait qu’elle risque d’être boguée pour cause de modifications en cours...
Répondre à ce message
Magique. C’est vraiment super parce que c’est con à dire mais les gens sont moins réticents à être formé à ooo qu’à spip. Donc c’est vraiment super, un grand merci.
Cependant, je constate quelque chose : sous OOo, quand on va à la ligne, ça créer automatiquement un nouveau paragraphe. C’est normal c’est la langue française qui veut ça. Mais le plugin ne semble pas le prendre en charge. Bug, feature, volonté ? Je veux bien une piste d’où chercher pour fixer la chose.
Je constate aussi en relisant que le gras et l’italique sont géré dans la transformation, mais pas le souligné.
Merci encore pour ce plugin cy_altern
PS : je fais une doc pour expliquer comment utiliser OOo et le plugin dans spip. J’ai une section « remerciement ». Pour le moment je te remercies avec cy_altern. Si tu veux que ton nom apparaissent ast3roid at gmail point com. Bien sûr je te ferais passer la doc une fois qu’on l’aura finit, ça va de soit.
Jérôme Prior, aka asteroid
Ce n’est pas une règle de la langue française,non, c’est ton traitement de texte qui veut ça... et uniquement parce que tu fais un changement de paragraphe (touche Entrée) et non pas un retour à la ligne (touches Maj + Entrée).
Aucun des 3... c’est simplement que le format de fichier XML généré par OOo Writer impose que tous les éléments de texte soient « emballés » dans une balise
<text:p>...bla bla bla...</text:p>
y compris ceux dans une cellule de tableau ou un item de liste par ex. Du coup, dans la XSLT qui traite le fichier xml extrait du odt, on ne peut pas appliquer la règle générale « faire un saut de paragraphe (i.e. 2 retours lignes dans le code SPIP) chaque fois que l’utilisateur est revenu à la ligne » puisque cela à pour conséquence que l’on se retrouve avec des doubles retours lignes dans les cellules de tableau (ce qui n’est pas possible puisque cela termine le tableau...) et idem pour les listes.(Voir le fichier content_test_complet_indente.xml dans le répertoire /tests du plugin pour mieux comprendre la structure du XML d’OOo Writer).
Du coup, il s’agit plutôt de feignantise qu’autre chose : en XSLT il y a moyen de faire un test de la parentèle dans l’arbre des balises du document pour détecter si oui ou non il faut appliquer le saut de paragraphe lors de la fermeture de la balise
<text:p>
mais j’ai eu la flemme de trouver la soluce qui le fait sans faire boguer tout le reste...Du coup, si on veut un retour paragraphe dans le code SPIP, il faut faire un double saut de paragraphe dans le texte (i.e. sauter une ligne).
Si tu es intéressé pour avancer sur ce point, il faut que tu bidouille dans le fichier /inc/odt2spip.xslt c’est le bloc
<xsl:template match="text:p">
quelque part vers la ligne 263. Si tu bosse direct sur le SVN (svn ://zone.spip.org/spip-zone/_plugins_/_stable_/odt2spip/version_0.1_stable), essaie de ne comiter que lorsque tu es absolument certain qu’il n’y a pas de régression des autres traitements ! Le fichier /tests/test_complet.odt est à utiliser comme référence de contenu à tester.Je veux bien que techniquement il en soit ainsi, mais la langue français veut qu’on ne va à la ligne que lorsqu’on créé un nouveau paragraphe. Regarde dans n’importe quel livre, on ne va _jamais_ à la ligne sans créer un nouveau paragraphe (souvent matérialisé par un espace plus large avant le paragraphe et un alinéa sur la première ligne).
Je te promets pas que je comite quoi que ce soit, par trouille de tout casser, mais je vais tenter d’y mettre le nez dedans. Si je trouve comment faire, je le posterais ici même.
Merci
j’ai essayé de regarder un petit peu pour cette histoire de paragraphe non géré, mais xsl est vraiment en soit, loin de css malgré son nom, et je n’ai pas su comprendre le fonctionnement. Aussi pas de modif :( Solution en attendant une évolution éventuelle du plugin : repasser les articles à la main.
Malgré ça un grand merci pour odt2sipi qui est vraiment indispensable. Bravo
asteroid
Répondre à ce message
Une petite erreur sur le lien (cf. Installation) voici le lien qui fonctionne :
http://files.spip.org/spip-zone/odt2spip_v0.1.zip
Merci pour ce boulot ... prometteur !
c’est corrigé, merci !
Répondre à ce message
Bonjour,
je suis vraiment intéressé par ce plugin mais je n’arrive pas à le faire fonctionner. L’installation n’a pas posé de problème mais voilà le le message que j’obtiens après la procédure de téléchargement du fichier repris sur mon disque dur :
Warning : Sablotron error on line 1 : XML parser error 2 : syntax error in /home2/j/jonfosse/www/spip/plugins/auto/odt2spip/action/odt2spip_importe.php on line 72
Erreur lors de la transformation XSLT du fichier ODT
Je travaille sous mac OS 10.5 mais je viens de faire le même essai sous windows et j’obtiens le même résultat avec le fichier de test téléchargé sous le site de Marseille.
Merci d’avance de vos lumières
Pierre Stegen
Il s’agit d’un problème dans l’appel des fonctions XSL de PHP4... C’est en principe corrigé par http://zone.spip.org/trac/spip-zone/changeset/27133 qui sera disponible dans le zip de cette nuit.
Merci, je teste demain et je vous informe du résultat.
Je croise les doigts !
Pierre Stegen
http://www.jonfosse.be
Bonjour,
cela ne marche toujours pas et l’erreur semble se produire ailleurs cette fois.
Voici le message affiché.
Merci pour votre travail très important pour moi. Ce plugin devrait permettre aux collègue de rédiger plus facilement des articles pour le site.
Bon dimanche
Pierre Stegen
Effectivement là il s’agit d’une erreur dans le chemin de la feuille de style XSL lors de son appel par le parseur Sablotron utilisé par PHP4. Le problème pour ce bogue c’est que le serveur PHP4 que j’utilise est sous Windows (easyphp 1.8) et qu’avec cette version je n’ai pas d’erreur...
Pourrais tu me créer un compte rédacteur dans ton SPIP et me l’envoyer ainsi qu’un code d’accès FTP (avec au minimum droit d’écriture sur le répertoire du plugin) histoire que je puisse faire les quelques manips nécessaires pour débusquer/corriger cette erreur ?
Mon adresse est cy_altern « chez » yahoo.fr
OK, c’est corrigé et commité (http://zone.spip.org/trac/spip-zone/changeset/27144). Merci pour l’espace de débogage ! (du coup ton site est fonctionnel ;-)
Bonsoir,
un tout grand merci pour la qualité et la rapidité de ton travail !
Pierre Stegen
Répondre à ce message
Salut !
Merci pour ce plugin génial !
Je me demandais s’il serait possible de gérer des niveaux d’intertitre quand des plugins comme les enluminures typo ou les intertitres hiérarchisés sont présents ?
Peut-être en faisant une autre feuille xsl qui prenne en compte les niveau d’intertitre ? Elle serait utilisée quand les plugins d’intertitres sont installés.
Est-ce que ce serait possible ??
Hélas je ne connais rien de rien au xsl et ne peut donc pas mettre la main à la patte avant d’avoir étudié comment ça fonctionne... Ça va être long !
Oui c’est possible (si ils utilisent les même raccourcis)
Ca serait une solution mais à priori il n’est pas nécessaire d’utiliser une autre feuille de style puisque l’on peut envoyer des paramètres au processeur XSLT de PHP : une feuille xslt devrait suffire à gérer les différents cas.
Le problème n’est pas de savoir si c’est possible mais si j’ai le temps/l’envie de le faire...
Merci pour la réponse rapide,
Maintenant que tu me confirmes que c’est possible, je vais commencer à me renseigner* sur XSLT et peut-être que j’arriverai à commiter quelque chose !!
*(il va falloir trouver le temps et ce n’est effectivement pas facile !)
ben du coup que le challenge était intéressant, j’ai craqué et je l’ai fait... Bon, c’était plus pour le « proof of concept » du passage de variables php au parseur XSL qu’autre chose vu que ces plugins font un méchant fork *sans retour* du code SPIP des articles ! (résultat le XSL est codé a la bourrin...)
Puisque « Intertitres enrichis » supporte les raccourcis de titres de « Enluminure typo » (ceux de la forme
{2{titre niveau deux}2}
j’ai pas différencié entre les 2 plugins et c’est ce type de code qui est utilisé.Ca devrait être dans le zip de cette nuit : merci de tester pour les 2 plugins et de faire le retour de bogues éventuels...
je ne sais pas ou ajouter cela alors voilà 2 pistes..
la deuxième
Super ces logos ! Je prend le premier, c’est celui que je préfère.
Merci beaucoup !
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 :
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.
Suivre les commentaires : |