如何分别获取Word文档中的每页文本(使用.NET)?

如何分别获取Word文档中的每页文本(使用.NET)?,.net,ms-word,full-text-search,extract,.net,Ms Word,Full Text Search,Extract,我需要确定关键字出现在Word文档的哪些页面上。我有一些工具可以获取文档的文本,但是没有任何工具可以告诉我文本出现在哪个页面上。有人给我一个好的起点吗?我正在使用.NET 谢谢 编辑:附加约束:我不能使用任何互操作的东西 edit2:如果有人知道稳定的库可以做到这一点,那也会很有帮助。我使用Aspose,但据我所知,它没有任何内容。这就是我获取文本的方式,我相信您可以将选择范围设置为一个页面,然后您可以测试该文本,可能与您需要的内容有点倒退,但可能是一个开始 Microsoft.Office.I

我需要确定关键字出现在Word文档的哪些页面上。我有一些工具可以获取文档的文本,但是没有任何工具可以告诉我文本出现在哪个页面上。有人给我一个好的起点吗?我正在使用.NET

谢谢

编辑:附加约束:我不能使用任何互操作的东西


edit2:如果有人知道稳定的库可以做到这一点,那也会很有帮助。我使用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支持论坛?我们使用此信息来维护投票系统,并将使用先获得更多选票的功能。

谢谢!我非常感谢你的回答。我想我应该提到我的限制——不能使用互操作。我将这标记为我能得到的最佳答案。希望它能帮助其他人在未来。不幸的是,我想要的是软,非常非常困难的版本。但我不会说这毫无意义。这是页面的唯一定义,它实际上意味着现实世界中的任何东西(其他任何东西都不是真正的所见即所得)。我非常感谢您的澄清,非常感谢您的回复。在这种情况下,您可能需要“打印”到固定页面格式,如tiff或PDF来完成此操作,但请确保始终在同一台机器上使用选定的相同打印驱动程序执行操作,以获得一致的结果。不确定是否记录请求,但我确实在现有线程上询问过。有人告诉我这件事马上就要发生了,但我再也没有听到回音。转换成PDF然后使用GetNextPageText对我来说很有效,但将来可能无法很好地扩展。如果你们真的把它公之于众,那肯定很好。谢谢你的关注!