Я разрабатываю (переписываю) связанную пару надстроек Word. Назначение надстроек для генерации концептуального индекса рукописи. Надстройка первого этапа реализована в word- js и позволяет пользователю вставлять записи индекса в документ; Затем он объединяет эти записи в индекс, который он помещает в новый раздел в конце документа, с заполнителями для фактических номеров страниц записей. Это связано с тем, что в word- js API нет никаких зацепок с номерами страниц документа.
Надстройка второго этапа разрешает эти заполнители, заменяя их фактическими номерами страниц. Этот этап реализован во ВСТО (C#). Вот как выглядит код для разрешения номера страницы:
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;
}
Это прекрасно работает для записей указателя в основном содержании документа. Но нам также необходимо разрешить номера страниц записей, созданных внутри сносок и сносок. Сноски не являются проблемой, поскольку они (почти) всегда находятся на той же странице, что и их якоря. Но сноски являются проблемой. Я могу запустить этот же код в диапазоне, который определен из коллекции сносок или сносок. Но Range.get_Information(WDInformation.wdActiveEndPageNumber)
возвращает номер страницы привязки, а не номер страницы, где появляется сама сноска (это может быть сотни страниц позже).
Есть ли способ определить, на какой странице на самом деле находится сноска, не якорь, а сама сноска?
Спасибо.