Вы можете попробовать перебрать все абзацы и получить номер страницы. Затем выберите первый абзац страницы.
using Word = Microsoft.Office.Interop.Word;
private void FindFirstParagraphOfEachPage()
{
Word.Application wordApp = new Word.Application();
Word.Document wordDoc = wordApp.Documents.Open(filePath);
Word.Range docRange = wordDoc.Range();
var paragraphs = new List<Paragraph>();
foreach (Word.Paragraph p in wordDoc.Paragraphs)
{
paragraphs.Add(new Paragraph()
{
PageNumber = (int)p.Range.get_Information(Word.WdInformation.wdActiveEndPageNumber),
ParagraphText = p.Range.Text.ToString()
});
}
var result = paragraphs.Where(x => !string.IsNullOrWhiteSpace(x.ParagraphText))
.GroupBy(x => x.PageNumber)
.Select(x => x.First());
wordDoc.Close();
wordApp.NormalTemplate.Saved = true;
wordApp.Quit();
}
Вспомогательный класс для хранения номера страницы и текста абзаца.
class Paragraph
{
public int PageNumber { get; set; }
public string ParagraphText { get; set; }
}
Я не уверен насчет освобождения объектов. Это, вероятно, потребует некоторых правок и тестирования.