在word doc中添加多个图像

时间:2017-10-13 10:54:34

标签: php ms-word com

我有一些图像与一个类型字段一起存储在数据库中,让我们说它的A或B.我试图将它们添加到一个单词模板,进入我命名为imgPlaceholder1和imgPlaceholder2的字段,具体取决于类型图片。继承了我目前的代码:

        $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();
        }

现在,代码可以工作,但它做了一些奇怪的事情。它会忽略类型并将所有内容拉入第一个占位符。我相信它是因为Selection-> Find-> Text,但我不知道如何清除选择或强制它搜索新的东西。 我也尝试保存和关闭文档,然后插入第二种类型的图像,但结果是相同的。所有图像都以第一个占位符结束。

1 个答案:

答案 0 :(得分:0)

由我自己解决。 这3行不能相距很远,或者他们感到悲伤并停止工作:

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

然后你可以获得一些编码自由,最后添加:

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

使用第二个字符串重复该过程以查找,它将起作用