我需要确定关键字出现在Word文档的哪些页面上。我有一些工具可以让我得到文档的文本,但没有任何东西可以告诉我文本出现在哪些页面上。有没有人对我有一个好的起点?我正在使用.NET
谢谢!
编辑:附加约束:我不能使用任何Interop的东西。
edit2:如果有人知道可以做到这一点的稳定库,那也会有所帮助。我使用Aspose,但据我所知,它没有任何东西。
答案 0 :(得分:2)
这就是我将文本输出的方法,我相信你可以设置选择范围到一个页面,然后你可以测试那个文本,可能会稍微偏离你需要但可能是一个起点。< / p>
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;
答案 1 :(得分:0)
您是如何定义页面的?
如果您只计算分段/硬分页符,那么它很复杂,但可行。如果你想计算软分页符,那么任务变得非常困难并且有些无意义。考虑确定软页面中断的位置是在运行时动态生成的,而不是存储在文件本身中。这取决于很多因素,包括活动的打印机驱动程序(是的,它可以在不同的计算机上更改相同的文件),字体,字距,行间距,边距等等。
答案 2 :(得分:0)
使用Aspose执行此操作的一种糟糕方法是将Word文件转换为PDF,然后在每页上抓取文本。
我对Aspose内部或者他们在转换时如何定义软页面一无所知,但这是我迄今为止所做的最好的。
答案 3 :(得分:0)
感谢您使用Aspose.Words。
在公共API中,我们目前只有“流量文档”信息,例如段落,表格,列表等。在内部,我们构建一个页面布局模型,其中包含页面,文本块,文本行等类。当然,文档模型和布局模型之间存在内部链接,并且可以找出哪个页面在哪里以及所有内容结束。通过公共API提供这些信息是(好的,仍然)在我们的优先级列表中。
您是否在Aspose.Words支持论坛中记录了您的请求?我们使用此信息来维护投票系统,并将处理首先获得更多投票的功能。