2011-05-18 105 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);