2010-10-20 117 views
2

我必須從很多(我的小型工作示例有數百個,總數可能會是數千個)中提取元數據,主要是Word文件。從舊Word文件中提取元數據(從2.0開始)

這些文件Word版本去從Word 2.0到Word 2007

我必須這樣做,在.net 3.5(使用C#),這是一個當地的WinForms應用程序。

我想可以從最新的OLE自動化(DsoFile.dll)中提取元數據。我和他們中的一些人成功做到了。

問題是DsoFile不支持較早的格式。可能他們不使用OLE。

我做了大量的谷歌搜索,我發現獲得我想要的數據的最好方法是使用反義詞(http://www.winfield.demon.nl/)。 與antiword我可以調用其進程並收集其輸出。它可以提取一些數據,但不是我所需要的。 例如:antiword只給我一個存儲的日期,我需要其中的兩個。

還有wvware,但我想這只是linux-only。

另一種選擇是GNU libextractor,但我不能找到一種方法,在使用.NET上

辦公室互操作將是一個絕望的最後一招。我還沒有測試過這個選項,但是我猜測這並不是一個當想要處理大量文件並且性能不錯的選項。

任何人都可以幫忙嗎?如果你需要更多的數據,請問。

對不起,我不是母語的人。

回答

2

我曾經在商業辦公室元數據提取和報告工具上工作。這不是一件容易的事情,尤其是如果你還想刪除任何元數據。從它的聲音,你只是想報告它,所以這樣更好。

從word2000開始,Word文件被存儲在OLE複合文檔中。網上有很多關於閱讀這些文件的文檔,但請記住,它只會爲您提供一小部分元數據。 word doc中的大多數「肉」在複合doc文件中以大二進制blob存儲,並且這些blob的格式是專有的。

網頁上有DOC文件格式的文檔。

http://msdn.microsoft.com/en-us/library/cc313118.aspx

但它是一個巨大的天賦和瘋狂的複雜。儘管如此,你也許能夠找出你需要處理的部分。

較新的DOCX文件更容易處理(並且潛藏的元數據也少得多)。

+0

+1感謝您的幫助。對於舊版本的版本,我最終在Linux上使用了antiword,並使用了一些小技巧,這樣就可以將我需要的缺失日期提取到xml文件,並使用我正在構建的c#進行解析。對於我使用微軟提供的(OLE)DsoFile.dll工具的較新格式。我提取的元數據是簡單的東西:作者,一些日期等 旁註:我不能upvote你的答案,我沒有足夠的回購。 :( – osiris 2010-11-03 09:55:18

+0

啊,是的,那個dsofile工具。這非常方便,但我不得不提取複合文檔元素(像檢測白色文本上的隱藏和白色,死頭,命名樣式等瘋狂的東西)。不用擔心upvote。 – DarinH 2010-11-03 14:38:10