Wordml php

Résolu
maniweb Messages postés 3 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 11 décembre 2004 - 9 déc. 2004 à 15:53
maniweb Messages postés 3 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 11 décembre 2004 - 11 déc. 2004 à 19:29
Bonjour,
je souhaite ecrire un script qui enregistre toutes les images d'un fichier wordml dans un dossier séparé.
Les caracteristiques d'une image dans un fichier wordml se trouvent entre les balises <w:binData> et </w:binData> mais je ne sais comment m'en servir

si vous avez une petite idée je suis preneur
merci pour votre aide
a+ mani

4 réponses

maniweb Messages postés 3 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 11 décembre 2004
11 déc. 2004 à 19:29
Bon j'ai trouvé la soultion en faite c'était pas trés compliqué l'image est en faite encode en base 64 entre les balises <w:binData w:name="wordml://03000001.png">iVBORw0KGgoAAAA...
</w:binData>

il suffit donc de recuper le contenu textuel de la balise
puis d'utiliser la fonction base64_decode de php

merci pour ton aide
3
elnawak Messages postés 27 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 21 février 2005
9 déc. 2004 à 19:22
salut maniweb

j'ai peut etre une idée qui pourrai te convenir , si le wordml est bien du xml (il me semble) ... sinon je sais pas . Si il s'agit d'un fichier respectant les normes xml tu peux utiliser l'objet DOM de php5 (pourvPHP4 dsl mais je serai pas capable de t'aider). en utilisant un getElementsByTagName("element_XML") tu devrai facilement recuperer le chemin de ton image et a partir de la tu peux facilement en faire ce qu tu veux.

tu devrais trouver des sources php4 et 5 sur ce site qui devrais bien t'aider.
si tu fais du php5 je peux te donner plus de detail sur le DOM .

@+ j'espere que ca t'as mis sur la voie.
0
maniweb Messages postés 3 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 11 décembre 2004
10 déc. 2004 à 11:20
Salut, merci d'avoir répondu
J'utilise bien php5 et la librairie dom xml pour lire les fichiers wordml et editer mes propres fichiers xml
J'arrive parfaitement a recuperer l'element le probleme c'est que je ne sais pas quoi en faire
Tu dois avoir raison en disant
Voici le bout de code xml d'un fichier wordml tu a peut etre une idée de comment faire

<w:pict>
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype>
<w:binData w:name="wordml://03000001.png">iVBORw0KGgoAAAA...
</w:binData>
<v:shape id="_x0000_i1025" type="#_x0000_t75" style="width:98.2pt;height:101.9pt">
<v:imagedata src="wordml://03000001.png" o:title="" />
</v:shape>
</w:pict>
0
elnawak Messages postés 27 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 21 février 2005
10 déc. 2004 à 19:45
essaie un truc du style :

$xml=new DomDocument ();
$xml->load('fichier xml');

function getImage ($xml) {
$params = $forums->documentElement->getElementsByTagName('binData ');
foreach ($params as $param) {
if ($param->hasChildNodes()) {
$param->firstChild->nodeValue ;
$param->getAttribute("name") // tu recupere le nom mais tu dois virer le "wordml://" (avec substring par ex)
}
}
}

De la, avec le nom tu fais un copy() vers le dossier que tu veux, par contre,si tu supprime les images du dossier d'origine , tu risque de devoir changer le chemin de certains attributs de ton fichier, avec getAttribute("attribut")=...;
j'ai pas teste le code mais ca devrai etre ca , enfin si tu veux je peux t'aider a faire un code plus precis mais il faudrai un fichier wordml complet ou du moins avec les déclarations des namespaces de l'element pict.

voila j'espere que ca t'avance
@+
0
Rejoignez-nous