2016-06-27 51 views

回答

1

要做到這一點,你必須:

  1. 找到所有段落
  2. 檢查段落與標題1標題(你必須檢查paragraphStyleId()內的ParagraphProperties(的存在.. 。)
  3. 如果它與標題1樣式段落,插入書籤。

你應該能夠用代碼來做到這一點像

 int bookmarkId = 0; 
     // MyDocuments.Body is a WordProcessDocument.MainDocumentPart.Document.Body 
     foreach(Paragraph para in MyDocuments.Body.Descendants<Paragraph>()) 
     { 
      // if the paragraph has no properties or has properties but no pStyle, it's not a "Heading1" 
      ParagraphProperties pPr = para.GetFirstChild<ParagraphProperties>(); 
      if (pPr == null || pPr.GetFirstChild<ParagraphStyleId>() == null) continue; 
      // if the value of the pStyle is not Heading1 => skip the paragraph 
      if (pPr.GetFirstChild<ParagraphStyleId>().Val != "Heading1") continue; 

      // it's a paragraph with Heading1 style, insert the bookmark 

      // the bookmark must have a start and an end 
      // the bookmarkstart/end share the same id 
      BookmarkStart bms = new BookmarkStart() { Name = "yourbookmarkname", Id = bookmarkId.ToString() }; 
      BookmarkEnd bme = new BookmarkEnd() { Id = bookmarkId.ToString() }; 
      ++bookmarkId; 

      // Insertion of bookmarkstart after the paragraphProperties 
      pPr.InsertAfterSelf(bms); 

      // The bookmarkend can be inserted after the bookmarkstart or after the object the bookmark must surrounding 
      // here we will insert it after bms. If you want to surround an object, find the object within the paragraph and insert it after 
      bms.InsertAfterSelf(bme); 

對這裏的書籤類更多的信息:https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.bookmarkstart(v=office.14).aspx

+0

由於馬克西姆門。 – MemoryLeak

相關問題