2008-11-14 49 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支持論壇中記錄了您的請求?我們使用這些信息來維護一個投票系統,並且將使用先獲得更多選票的功能。

相關問題