2008-11-14 53 views
1

我需要确定关键字出现在Word文档的哪些页面上。我有一些工具可以让我看到文档的文本,但没有任何内容告诉我文本出现在哪个页面上。有没有人对我有好的开始?我正在使用.NET如何分别抓取Word文档中的每一页文本(使用.NET)?

谢谢!

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

edit2:如果有人知道稳定的库可以做到这一点,那也是有帮助的。我使用Aspose,但据我所知,没有任何东西。

回答

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; 
+0

谢谢!我非常感谢答案。我想我应该提到我的限制 - 不能使用Interop。 – 2008-11-14 15:49:47

+0

我将此标记为我可以得到的最佳答案。希望它能在未来帮助别人。 – 2008-11-14 17:56:18

0

你是如何定义页面的?

如果你只计算部分/硬分页,它很复杂,但可行。如果你想计算软分页,这个任务变得非常困难,而且有些没有意义。考虑确定软分页土地在运行时动态生成的位置,而不是存储在文件本身中。它取决于很多因素,包括活动的打印机驱动程序(是的,它可以改变为不同计算机上的相同文件),字体,字距,行间距,页边距等,等等。

+0

不幸的是我想要一个非常非常非常软的版本。我不会说这是毫无意义的。这是页面的唯一定义,实际上意味着真实世界中的任何东西(其他任何东西都不是真正的所见即所得)。 我非常感谢您的澄清,并且非常感谢您的回复。 – 2008-11-14 17:53:40

0

Aspose的一个蹩脚方式是将Word文件转换为PDF格式,然后在每个页面上抓取文本。

我不知道Aspose内部的任何东西,或者他们在转换时如何定义他们的软页面,但这是迄今为止我所知道的最好的。

0

感谢您使用Aspose.Words。

在公共API中,我们目前只有“流程文档”信息,例如,段落,表格,列表等。在内部,我们构建了一个页面布局模型,其中包含页面,文本块,文本行等类。当然在文档模型和布局模型之间有内部链接,并且可以找出哪个页面结束了什么地方和所有东西。通过公共API提供这些信息在我们的优先级列表中(仍然)很高。

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

相关问题