Как я могу получить каждую страницу текста в документе Word отдельно (используя .NET)?

StackOverflow https://stackoverflow.com/questions/290287

Вопрос

Мне нужно определить, на каких страницах документа Word встречается ключевое слово.У меня есть несколько инструментов, которые могут получить текст документа, но нет ничего, что могло бы сказать мне, на каких страницах находится этот текст.Есть ли у кого-нибудь хорошая отправная точка для меня?Я использую .NET

Спасибо!

редактировать:Дополнительное ограничение:Я не могу использовать ничего из Interop.

редактировать2:Если кто-нибудь знает стабильные библиотеки, которые могут это сделать, это тоже будет полезно.Я использую Aspose, но, насколько я знаю, там ничего нет.

Это было полезно?

Решение

Вот как я получаю текст. Я считаю, что вы можете установить диапазон выбора на страницу, затем вы можете проверить этот текст, может быть немного назад от того, что вам нужно, но это может быть отправная точка.

Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application();
object missing = Type.Missing;
object fileName = @"c:\file.doc";
object objFalse = false;

wordApplication.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;
Microsoft.Office.Interop.Word.Document doc = wordApplication.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,ref objFalse, ref missing, ref missing, ref missing, ref missing);

//I belevie you can define a SelectionRange and insert here
doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();

IDataObject data = Clipboard.GetDataObject();
string text = data.GetData(DataFormats.Text).ToString();

doc.Close(ref missing, ref missing, ref missing);
doc = null;

wordApplication.Quit(ref missing, ref missing, ref missing);
wordApplication = null;

Другие советы

Как вы определяете страницу?

Если вы считаете только раздел/жесткую страницу, это сложно, но выполнимо.Если вы хотите посчитать мягкие разрывы страниц, задача становится очень сложной и в некоторой степени бессмысленной.Учтите, что определение места разрыва программной страницы динамически генерируется во время выполнения и не сохраняется в самом файле.Это зависит от огромного количества факторов, включая активный драйвер принтера (да, он может измениться для одного и того же файла на другом компьютере), шрифты, кернинг, межстрочный интервал, поля и т. д., т. п. и т. п.

Один дрянной способ сделать это с помощью Aspose — преобразовать файл Word в PDF, а затем получить текст на каждой странице.

Я ничего не знаю о внутреннем устройстве Aspose или о том, как они определяют свои программные страницы при конвертации, но это лучшее, что у меня есть на данный момент.

Благодарим вас за использование Aspose.Words.

В общедоступном API в настоящее время у нас есть только информация о «потоковом документе», например.абзацы, таблицы, списки и т. д.Внутри мы создаем модель макета страницы, которая имеет такие классы, как страница, блок текста, строка текста и т. д.Конечно, между моделью документа и моделью макета существуют внутренние связи, и можно узнать, какая страница где заканчивается, и все такое.Доступность этой информации через общедоступный API находится (ну, по-прежнему) на первом месте в нашем списке приоритетов.

Зарегистрировали ли вы свой запрос на форумах поддержки Aspose.Words?Мы используем эту информацию для поддержки системы голосования и будем работать над функциями, которые первыми наберут больше голосов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top