Вопрос

Я пытаюсь извлечь текст из файлов PDF с помощью iFilter.

Adobe PDF iFilter, поставляемый вместе с Adobe Reader, ужасен. HRESULT E_FAIL сообщения для многих PDF-документов.

А FoxIt PDF-фильтр прекрасно работает практически со всеми PDF-файлами, которые я использовал для тестирования.

Проблема в том, что каждый раз, когда запускается Adobe Updater, он заменяет потрясающий FoxIt IFilter дрянным Adobe IFilter.

Я использовал Загрузочный фильтр метод для получения зарегистрированного IFilter для файлов PDF.Есть ли способ заставить Win32 API загружать FoxIt IFilter вместо Adobe IFilter?

ПРИМЕЧАНИЕ: Этот вопрос о определение того, какие IFilters установлены задает схожий, но не идентичный вопрос.

Это было полезно?

Решение

IFilter, похоже, зарегистрирован как COM-объект в Windows, поэтому вы сможете просто создать его экземпляр с помощью COM.

От http://msdn.microsoft.com/en-us/library/ms692565 :Структура DLL такова, что она имеет IFilter и IClassFactory.

Вы должны иметь возможность создать экземпляр IClassFactory (с учетом CLSID).

проверитьhttp://msdn.microsoft.com/en-us/library/ms684007 http://msdn.microsoft.com/en-us/library/ms680760

Другие советы

Помимо описанного выше способа, вы можете просто проверить общесистемную DLL-библиотеку IFilter на наличие интересующего вас типа файла.

Если вы обнаружите Adobe DLL вместо Foxit DLL, измените запись InprocServer32 на ключ, на который ссылается PersistentHandler вашего типа файла.Для этого могут потребоваться специальные права в зависимости от используемой вами системы.Затем начните использование IFilter.

Взгляните на простое объяснение того, как выбираются библиотеки DLL IFIlter:

http://msdn.microsoft.com/en-us/library/ms692488

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top