50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > 使用aspose.word向word中插入书签

使用aspose.word向word中插入书签

时间:2024-05-21 04:56:39

相关推荐

使用aspose.word向word中插入书签

一:获取到内容的node开始和结束node,然后比较要标记的内容在这个段落中的位置

public static bool AddBookMark(ref Aword.Document doc, Aword.Node startNode, Aword.Node EndNode, string strBookMarkKind, int index, out string strError)

{

strError = string.Empty;

try

{

//添加BookMark

Aword.DocumentBuilder builder = new Aword.DocumentBuilder(doc);

builder.MoveTo(startNode);

string strBookMarkName = string.Empty;

strBookMarkName = strBookMarkKind + "_" + index.ToString();

if (index == 0)

{

strBookMarkName = strBookMarkKind;

}

builder.StartBookmark(strBookMarkName);

builder.MoveTo(EndNode);

builder.EndBookmark(strBookMarkName);

}

catch (System.Exception ex)

{

strError = "添加BookMark错误!";

return false;

}

return true;

}

二:比较要标记的内容在这个段落中的run位置,然后确定node的开始和结束

public static bool AddBookMark(Aword.Document doc, Aword.Paragraph para, List<Aword.Node> listNode, string strMarkName)

{

try

{

if (listNode.Count > 0)

{

Aword.Node startNode = listNode[0];

Aword.Node endNode = listNode[listNode.Count - 1];

int startIdx = para.IndexOf(startNode);

if (startIdx >= 0)

{

Aword.BookmarkStart start = new Aword.BookmarkStart(doc, strMarkName);

para.InsertBefore(start, startNode);

int endIdx = para.IndexOf(endNode);

if (endIdx >= 0)

{

Aword.BookmarkEnd end = new Aword.BookmarkEnd(doc, strMarkName);

para.InsertAfter(end, endNode);

}

else

{

return false;

}

}

else

{

return false;

}

}

}

catch (System.Exception ex)

{

return false;

}

return true;

}

三:上述两种都是比较局限,而且都是在不动原文的基础上标,可以把该段内容放入一个新的word中然后,将这段内容细化分割,一个run下面就只有一个字符,这种,然后再去比较,做完之后按照node添加书签,然后再与旧的word中的那段内容替换,当然,这种方式比较麻烦,以后再放上代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。