有没有一种方法可以使用vsto确定Word文档中尾注的内容?

时间:2020-04-13 19:49:19

标签: vsto word-addins

我正在开发(重写)一对相关的Word加载项。加载项的目的是生成手稿的概念索引。第一阶段的加载项是在word-js中实现的,它允许用户在文档中插入索引条目。然后,它将这些条目聚合到一个索引中,然后将其放入文档末尾的新节中,并使用占位符表示条目的实际页码。这是因为word-js API在文档页码中没有任何钩子。

第二阶段加载项解析这些占位符,将其替换为实际的页码。此阶段在VSTO(C#)中实现。这是代码解析页码的样子:

df <- structure(list(lon = c(-124.1637, -122.4199), lat = c(40.80207, 
37.77903)), class = "data.frame", row.names = c(NA, -2L))

> df
        lon      lat
1 -124.1637 40.80207
2 -122.4199 37.77903

这对于文档的主要内容中的索引条目工作正常。但是,我们还需要解析在脚注和尾注中创建的条目的页码。脚注不是问题,因为(几乎)脚注始终与锚点在同一页面上。但是尾注是个问题。我可以在脚注或尾注集合定义的范围内运行相同的代码。但是 private int[] FindAndReturnPage(Range range, string[] index_id) { // index_id consists of two strings, the index number (1-3) and the entry id int pageNumStart = -1; // if nothing is found we return -1 int pageNumEnd = -1; Find finderStart = range.Find; finderStart.ClearFormatting(); // removes formatting to make the find work better finderStart.Text = "XE Startindex_" + index_id[0] + "_id_" + index_id[1]; // eg: XE Startindex_1_000014 finderStart.Execute(); if (finderStart.Found) { range.Select(); pageNumStart = Globals.ThisAddIn.Application.Selection.Range.get_Information(WdInformation.wdActiveEndPageNumber); // in case the index entry spans more than one page, there might be an Endindex too Find finderEnd = range.Find; finderEnd.ClearFormatting(); finderEnd.Text = "XE Endindex_" + index_id[0] + "_id_" + index_id[1]; // eg: XE Endindex_1_000014 finderEnd.Execute(); if (finderEnd.Found) { range.Select(); pageNumEnd = Globals.ThisAddIn.Application.Selection.Range.get_Information(WdInformation.wdActiveEndPageNumber); } } int[] both = { pageNumStart, pageNumEnd }; return both; } 返回锚点的页码,而不是尾注本身出现的页码(以后可能有数百页)。

有什么方法可以确定尾注实际在哪个页面上,而不是锚点而是尾注本身?

谢谢。

0 个答案:

没有答案