2017-09-14 76 views
0

我正在使用Novacode DocX創建一個Word文檔,在該文檔中我想插入一段文本,然後在文檔中插入對其的引用'(見第X頁)'的形式,其中X由Word動態生成。如何在Novacode DocX中插入交叉引用頁碼號碼

在Word本身中,我可以通過創建第一段文本的書籤並在希望頁碼的位置插入交叉引用來輕鬆完成此操作。

我想我知道如何使用DocX添加書籤,但是如何創建交叉引用?這在DocX中甚至可能嗎?

提前感謝您的幫助, 克里斯

回答

0

一些擺弄後,我終於找到了一種方法來實現這一目標:

internal void AddCrossReference(DocX doc, Paragraph p, string destination) 
     { 
      XNamespace ns= doc.Xml.Name.NamespaceName; 
      XNamespace xmlSpace = doc.Xml.GetNamespaceOfPrefix("xml"); 
      p = p.Append(" (see pp"); 
      p.Xml.Add(new XElement(ns + "r", new XElement(ns + "fldChar", new XAttribute(ns + "fldCharType", "begin")))); 
      p.Xml.Add(new XElement(ns + "r", new XElement(ns + "instrText", new XAttribute(xmlSpace + "space", "preserve"), String.Format(" PAGEREF {0} \\h ", destination)))); 
      p.Xml.Add(new XElement(ns + "r", new XElement(ns + "fldChar", new XAttribute(ns + "fldCharType", "separate")))); 
      p.Xml.Add(new XElement(ns + "r", new XElement(ns + "rPr", new XElement(ns + "noProof")), new XElement(ns + "t", "1"))); 
      p.Xml.Add(new XElement(ns + "r", new XElement(ns + "fldChar", new XAttribute(ns + "fldCharType", "end")))); 
      p = p.Append(")"); 
     } 

destination是要交的書籤的名稱參考。

任何建議的改進將是最受歡迎的。