Извлечение метаданных из старых файлов Word (начиная с версии 2.0) - PullRequest
2 голосов
/ 20 октября 2010

Мне нужно извлечь метаданные из большого количества (мой небольшой рабочий образец насчитывает сотни, общее количество, вероятно, будет тысячи) файлов Microsoft Office, в основном Word.

Эти файлы Версии Word переходят с Word 2.0 наWord 2007.

Я должен сделать это в .net 3.5 (используя c #), и это локальное приложение winforms.

Я могу извлекать метаданные из самых последних с помощью OLE Automation (DsoFile).длл), я думаю.Я успешно справился с некоторыми из них.

Проблема в том, что старые форматы не поддерживаются DsoFile.Вероятно, они не используют OLE.

Я много гуглил и обнаружил, что лучший (вероятно, единственный) способ получить нужные мне данные - это использование анти-слова (http://www.winfield.demon.nl/). С анти-словом я могу вызвать)он обрабатывает и собирает выходные данные. Он может извлечь некоторые данные, но не все, что мне нужно. Пример: antiword дает мне только одну из сохраненных дат, и мне нужно две из них.

Есть также wvware, но ядумаю, это только для linux.

Другой вариант - gnu libextractor, но я не могу найти способ использовать его в .net

. Взаимодействие с Office было бы отчаянным последним средством.Я проверил этот вариант, но, полагаю, он не подходит для обработки огромного количества файлов с достойной производительностью.

Может кто-нибудь помочь? Если вам нужно больше данных, просто спросите.

Извините за мой английский, я не являюсь носителем языка.

1 Ответ

2 голосов
/ 02 ноября 2010

Раньше я работал над коммерческим офисным инструментом для извлечения метаданных и отчетности. Это не простая задача, особенно если вы хотите удалить какие-либо из этих метаданных. Судя по всему, вы просто хотите сообщить об этом, так что лучше.

Начиная с word2000, файлы Word хранились в документах OLE Compound. В Интернете есть множество документов о чтении этих файлов, но имейте в виду, что вы получите только небольшое подмножество метаданных. Большая часть «мяса» слова doc хранится в виде больших двоичных двоичных объектов в файле составного документа, и формат этих объектов является проприетарным.

В Интернете есть документация для формата файла DOC.

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

Но это МАССИВНАЯ спецификация и безумно сложная. Тем не менее, вы можете найти только те части, с которыми вам нужно иметь дело.

С более новыми файлами DOCX гораздо проще работать (и в них также скрывается меньше метаданных).

...