我试图添加一个超链接到一些XML 插入Word文档的字段(使用Microsoft.Office.Interop.Word)。
正在插入的XML包含多个段落,每个段落都包含一些应转换为超链接的文本。包含超链接的文本是在"可用于"之后的段落末尾提取的。找到了子串。
以下代码可以创建超链接,但第一个超链接始终应用于所有段落。我期待代码为每个被迭代的段落创建一个超链接。
我的猜测是,paragraph.Range对象指向的文本实际上是插入的整个XML而不是段落中包含的文本。我还确认paragraph.Range.Text
属性为每个段落返回正确的文本,因此我对Range属性的预期完全感到困惑。
有什么想法吗?提前谢谢。
if (!string.IsNullOrWhiteSpace(bibliography))
{
const string linkToken = "Available at ";
field.Result.InsertXML(bibliography);
foreach (Paragraph paragraph in field.Result.Paragraphs)
{
var paragraphText = paragraph.Range.Text;
var indexOfLink = paragraphText.IndexOf(linkToken, StringComparison.OrdinalIgnoreCase);
if (indexOfLink >= 0)
{
var linkStart = indexOfLink + linkToken.Length;
var linkPart = paragraphText.Substring(linkStart);
Uri uriFound;
if (Uri.TryCreate(linkPart, UriKind.Absolute, out uriFound))
{
object linkAddress = uriFound.ToString();
paragraph.Range.Hyperlinks.Add(paragraph.Range, ref linkAddress);
}
}
}
}