2017-09-14 97 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是要交的书签的名称参考。

任何建议的改进将是最受欢迎的。