Как я могу получить каждую страницу текста в документе Word отдельно (с помощью .NET)? - PullRequest
1 голос
/ 14 ноября 2008

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

Спасибо!

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

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

Ответы [ 4 ]

2 голосов
/ 14 ноября 2008

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

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;
0 голосов
/ 15 ноября 2009

Спасибо за использование Aspose.Words.

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

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

0 голосов
/ 14 ноября 2008

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

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

0 голосов
/ 14 ноября 2008

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

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

...