1

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

谢谢!

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

编辑2:如果有人知道可以做到这一点的稳定库,那也会有所帮助。我使用 Aspose,但据我所知,它什么都没有。

4

4 回答 4

2

这就是我获取文本的方式,我相信您可以将选择范围设置为一个页面,然后您可以测试该文本,可能与您需要的内容有点倒退,但可能是一个开始的地方。

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;
于 2008-11-14T15:10:34.417 回答
0

你如何定义一个页面?

如果您只计算部分/硬页,它会很复杂,但可行。如果要计算软分页符,任务会变得非常非常困难并且有些毫无意义。考虑到软分页符所在位置的确定是在运行时动态生成的,而不是存储在文件本身中。它取决于大量因素,包括活动的打印机驱动程序(是的,它可以针对不同计算机上的同一文件进行更改)、字体、字距调整、行距、边距等等等。

于 2008-11-14T16:03:23.497 回答
0

使用 Aspose 执行此操作的一种糟糕方法是将 Word 文件转换为 PDF,然后在每一页上抓取文本。

我对 Aspose 内部结构或转换时如何定义软页面一无所知,但这是迄今为止我所拥有的最好的。

于 2008-11-14T17:55:36.923 回答
0

感谢您使用 Aspose.Words。

在公共 API 中,我们目前只有“流文档”信息,例如段落、表格、列表等。在内部,我们构建了一个页面布局模型,该模型具有页面、文本块、文本行等类。文档模型和布局模型之间当然存在内部链接,并且可以找出哪个页面在哪里结束以及所有内容。通过公共 API 提供这些信息(嗯,仍然)在我们的优先级列表中居高不下。

您是否在 Aspose.Words 支持论坛中记录了您的请求?我们使用此信息来维护投票系统,并将致力于首先获得更多选票的功能。

于 2009-11-15T11:14:54.660 回答