Как найти номер страницы для Word Paragraph?

Я пытаюсь разобрать документ Word, а информация, которую я ищу, должна располагаться только на первой странице. Есть ли способ получить номер страницы для абзаца?

foreach (Word.Paragraph p in document.Paragraphs)
{
    // pageNo = .....
    // if(pageNo == 1 && p.Range.Text.StartsWith("This")) { 
    //     /* do some processing with the paragraph */ 
    // }
}

Ответ 1

Из этого сообщения VSTO 2007: как определить номер страницы и абзаца диапазона? я мог видеть, что вы можете получить номер страницы из диапазона

/// <summary>
    /// Determines the pagenumber of a range.
    /// </summary>
    /// <param name="range">The range to be located.</param>
    /// <returns></returns>
    private static int GetPageNumberOfRange(Word.Range range)
    {
        return (int)range.get_Information(Word.WdInformation.wdActiveEndPageNumber);
    }

И из этого сообщения как обнаружить пустой абзац в Word Document с помощью Microsoft.Office.Interop.Word в С# 4.0? я уверен, что вы можете найти Диапазон от параграфа!

for each p in Doc.Content.Paragraphs
    if (p.Range.End - p.Range.Start) > 1 then (The paragraph is empty)
Next

у вас должно быть ваше решение, сочетающее оба ответа, я уверен!

Ответ 2

foreach (Word.Paragraph p in document.Paragraphs)
{
   int page = p.Range.Information[Word.WdInformation.wdActiveEndAdjustedPageNumber];
   Console.WriteLine(p.Range.Text + " is on page " + page);
}

Что-то вроде этого может быть тем, что вы ищете. Прочитайте разницу между wdActiveEndPageNumber и wdActiveEndAdjustedPageNumber, чтобы узнать, какая из них подходит вам.