代码之家  ›  专栏  ›  技术社区  ›  dthrasher

如何使用特定的PDF IFilter

  •  6
  • dthrasher  · 技术社区  · 14 年前

    我正在尝试使用IFilter从PDF文件中提取文本。

    与Adobe Reader一起发布的Adobe PDF iFilter很糟糕,返回 HRESULT E_FAIL 许多pdf文档的消息。

    这个 FoxIt PDF IFilter 在几乎所有我用来测试的pdf上都工作得很好。

    问题是,每次运行adobe更新程序时,它都会用糟糕的adobe iFilter替换令人敬畏的foxit iFilter。

    我一直在用 LoadIFilter 方法获取PDF文件的注册IFilter。有没有办法强制win32 api加载foxit ifilter而不是adobe ifilter?

    注: 关于这个问题 determining which IFilters are installed 问一个相关但不完全相同的问题。

    2 回复  |  直到 12 年前
        1
  •  3
  •   Nigel Thorne    14 年前

    IFilter似乎在Windows中注册为COM对象,因此您应该能够使用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

        2
  •  0
  •   Jimmy Koerting    12 年前

    除上述方法外,您只需检查系统范围内使用的ifilter dll中您感兴趣的文件类型。

    如果找到adobe dll而不是foxit dll,请更改文件类型的persistenthandler所引用的键的inprocserver32项。这可能需要特殊权限,具体取决于您使用的系统。 然后开始使用iFilter。

    查看如何选择iFilter dll的简单说明:

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