2017-10-13 43 views
0

J'ai quelques images stockées dans une base de données avec un champ de type, disons son A ou B. J'essaie de les ajouter à un modèle de mot, dans les champs que j'ai nommé imgPlaceholder1 et imgPlaceholder2 selon le type de l'image. Voici mon code actuel:ajouter plusieurs images dans un document doc

 $wordTable = new COM("Word.Application") or die("Unable to instanciate Word"); 
$wordTable->visible = 1; 
$wordTable->Documents->Open("c:\template\file.doc"); 

    try { 
     $query = "select id,path,type from uploads Where id = '$Id'"; 
     $action = mysql_query($query) or die(mysql_error()); 
      while($result = mysql_fetch_array($action)){ 
       $type=$result['type']; 
       $path=$result['path']; 
       if($type=='A'){ 
        $wordTable->Selection->Find->ClearFormatting(); 
        $wordTable->Selection->Find->Text = 'imgPlaceholder1'; 
        $wordTable->Selection->Find->Execute(); 
        $wordTable->Selection->InlineShapes->AddPicture($path,False,True); 
       } 
       if($type=='B'){ 
        $wordTable->Selection->Find->ClearFormatting(); 
        $wordTable->Selection->Find->Text = 'imgPlaceholder2'; 
        $wordTable->Selection->Find->Execute(); 
        $wordTable->Selection->InlineShapes->AddPicture($path,False,True); 
       } 
      } 
    } 
    catch (Exception $e) 
     { 
      echo $e->getMessage(); 
     } 

Maintenant, le code fonctionne mais il fait quelque chose de bizarre. il ignore le type et tire tout dans le premier espace réservé. Je crois que c'est à cause du Selection-> Find-> Text, mais je n'ai aucune idée de comment effacer la sélection ou la forcer à chercher quelque chose de nouveau. J'ai également essayé d'enregistrer et de fermer le document, puis d'insérer le second type d'images, mais le résultat est le même. toutes les images se retrouvent dans le premier espace réservé.

Répondre

0

Résolu par moi-même. ces 3 lignes ne peuvent pas être très loin les uns des autres, ou ils se tristes et cesser de travailler:

$wordTable->Selection->Find->ClearFormatting(); 
$wordTable->Selection->Find->Text = '_fl_ImgTest_1'); 
$wordTable->Selection->Find->Execute(); 

alors vous pouvez obtenir une certaine liberté de codage et enfin ajouter:

$wordTable->Selection->InlineShapes->AddPicture($path,False,True); 

répétez la procédure avec le deuxième chaîne à trouver, et il va fonctionner