2011-05-18 110 views
2

我快要疯了试图找到如何插入图片在我的书签...插入图片

目前我有插入文本或表格没有问题:我发现书签和插入在那个位置像约翰的方式:Replace bookmark text in Word file using Open XML SDK

现在我想发送图像到这个书签。我读的文章,如:

...但我不能做到这一点与我的模板DOTX工作,我的书签。一些想法?

这里是我使用插入一段在我的书签代码:

Run runImg = new Run(); 
runImg.Append(element); 

Paragraph parImg = new Paragraph(); 
parImg.Append(runImg); 

foreach (BookmarkStart bookmarkStart in bookmarkMap.Values) 
{ 
    if (bookmarkStart.Name.Value == _nomBM) 
    { 
     bookmarkStart.FirstChild.PrependChild(parImg); 
    } 
} 

谢谢!

回答

3

在书签中插入一张图片应该像在将图片插入到word文档本身中一样工作。上述任何链接都应该向您展示如何正确插入图片。关键是要找到要插入的书签,并确保在<w:bookmarkStart><w:bookmarkEnd>元素之间插入包含该图片的段落。如果这是你正在做的事,而你仍然有问题,请发布你的代码,以便我们看看。

编辑

看到你的代码后的问题是<w:bookmarkStart>元素是<w:p>元素的子元素。你想找到<w:bookmarkStart>的母公司,这将是<w:p>元素,然后用这样的插入图像的一段作为下一个元素:

bookmarkStart.Parent.InsertAfterSelf<Paragraph>(parImg); 
+0

OK,我知道......你看,如果我这样做:document.MainDocumentPart.Document.Body.AppendChild(新段(新润(元)));其中element是具有所有propiets和格式的图像......效果很好,图像插入到主文档中。但是当我想插入我的书签时,我这样写: – Displaying 2011-05-19 08:21:55

+0

Run runImg = new Run(); runImg.Append(元件);段落parImg =新的段落(); parImg.Append(runImg); (bookmarkStart bookmarkStart in bookmarkMap.Values){if(bookmarkStart.Name.Value == _nomBM){bookmarkStart.FirstChild.PrependChild(parImg); }} DOESEN'T WORK – Displaying 2011-05-19 08:23:43

+0

@Displaying - 这是因为工作簿部分开始元素是段落元素的子元素。一旦找到想要的起始书签元素,就可以获取其父项,然后将图像段添加为下一个元素。像'bookmarkStart.Parent.InsertAfterSelf (parImg);'看到我的编辑了相同的信息。 – amurra 2011-05-19 11:39:26

0

我知道这是为时已晚,但试试下面你可以得到一位接近书签位置

bookmarkStart.Parent.InsertBeforeSelf<Paragraph>(parImg);