Есть ли эквивалент IFilter на Mono / Linux? - PullRequest
0 голосов
/ 27 апреля 2011

Я конвертирую приложение из .NET / Windows в mono / linux, но не могу найти информацию о IFilters. Я знаю о Microsoft IFilters для Office, Adobe и FoxIt IFilters для PDF, но не знаю, работают ли они в Linux и / или Mono, или есть ли что-то функционально эквивалентное (используется для извлечения простого текста из закрытых форм) .

Ответы [ 3 ]

4 голосов
/ 28 апреля 2011

IFilter - это собственный API-интерфейс Windows, а не .NET API.

В Linux вы можете использовать фильтры из поискового индексатора, такого как Beagle.

1 голос
/ 28 апреля 2011

Насколько я могу судить, технология IFiler все еще используется в недавних приложениях.В своем первоначальном дизайне (примерно в 1996 году или ранее) это COM-объекты, написанные на C или C ++.Большинство фильтров IFilter, доступных с прошлых лет, не будут работать на 64-битной.Если вы создаете приложение вне Windows, вам может потребоваться создать код, который загружает и вызывает IFilters.

Любая реализация, которая хочет использовать IFilter, должна иметь некоторый интерфейс для загрузки и вызова IFilter в памяти., наведите его на файл и нажмите его, чтобы прочитать содержимое, затем нажмите его еще несколько раз, чтобы извлечь текстовый результат из буфера памяти.Современные реализации, использующие фильтры IFilter, используют более продвинутую защиту памяти для очистки памяти при утечках, что не редкость в C-кодировании ... Несколько примеров (примерно с 2003 или 2005 года) доступны в Интернете, они должны работать, если вы уважаетестарый стиль интерфейса.

Надеюсь, что это поможет.

0 голосов
/ 27 апреля 2011

Не уверен, что это то, что вы используете, но согласно MSDN IFilter (в связи со службой индексирования) устарел. Поэтому я был бы удивлен, если бы это было переопределено в Mono.

Тем не менее, многие .NET сборок могут быть перенесены в приложение Mono без перекомпиляции. Хотя представляется более вероятным, что это будет иметь место со сторонней библиотекой DLL, чем с Microsoft, возможно, стоит попробовать, чтобы это работало в вашем случае.

http://msdn.microsoft.com/en-us/library/ms691105(v=vs.85).aspx

...