c# - 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

标签 c# pdf adobe ifilter

我正在尝试使用 Adob​​e IFilter 搜索 PDF 文件。我的代码是用 C# 编写的,我正在使用 p/invoke 来获取 IFilter 的实例:

    [DllImport("query.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    private extern static int LoadIFilter(
        string pwcsPath,
        [MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter,
        ref IFilter ppIUnk);

这适用于大多数 PDF 文件,但此方法返回 -2147467259 且 ppIUnk 为空的少数文件除外。有没有人遇到这种类型的错误或对如何解决这个问题有任何建议?

最佳答案

参见 MSDN docs对于 LoadIFilter 函数 - 您应该得到错误代码之一,至少根据那个页面。

  • E_ACCESSDENIED = 0x80070005 - 该函数被拒绝访问过滤器文件。
  • E_HANDLE = 0x80070006 - 该函数遇到无效句柄,可能是由于内存不足的情况。
  • E_INVALIDARG = 0x80070057 - 该函数接收到无效参数。
  • E_OUTOFMEMORY = 0x8007000E - 该函数没有足够的内存或其他资源来完成操作。
  • E_FAIL = 0x80000008 - 函数遇到未知错误。

(此外,列出了整套常量值 here,这似乎比 MSDN 上列出的要长得多。)现在,有趣的是,您的错误代码对应于 80004005 十六进制,这两个页面上都没有列出。然而,我怀疑 pinvoke.net 可能有误,因为许多其他网站(例如 this)将其列为 E_FAIL...并不是说它真的有帮助。对于不确定的答案,我们深表歉意,但也许它至少会为您指明正确的轨道。

编辑: 这个错误似乎已经在其他地方记录下来并且给很多人造成了很多困惑,没有简单的解决方案。看起来原因实际上可能是其中之一......有各种建议herehere您可能想尝试一下,但我认为我无法为您提供更多帮助,因为在这种情况下我自己从未遇到过此错误。无论如何祝你好运......

关于c# - 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690076/

相关文章:

actionscript-3 - 是否可以在Adobe AIR中监视或更改系统音频音量?

c# - 如何将自适应卡中的用户输入输入检索到 C# 代码以及如何在提交按钮单击时调用下一个意图

c# - Stacktrace信息保存原始源路径

excel - 从excel链接到打开pdf文件

actionscript-3 - as3 |如何使用 Adob​​e AIR 导出 PNG

css - 我可以在一个 .css 文件中编写所有 Spark CSS 和 MX CSS 吗?

c# - 带有 EnterKeyPress 事件的文本框

c# - 在win7资源管理器中添加一个新列?

java - 如何将jsp中描述的字段或值传递给jasper报表,以便它可以以PDF格式显示数据

css - 使用 bgiframe 时,CSS 菜单的滚动条仍然隐藏在 IE 中的 PDF 后面