【问题标题】:Trying to open a PDF with AxAcroPDFLib尝试使用 AxAcroPDFLib 打开 PDF
【发布时间】:2015-07-09 06:49:15
【问题描述】:

我已在我的 PC 上安装了最新的 Adob​​e Reader (Adobe Acrobat Reader DC)。 现在我想在 C# 中使用 AxAcroPDFLib 在我的 Windows 窗体应用程序中打开并显示一个 PDF 文件。

问题是,如果我尝试使用LoadFile() 方法,那么它说这个方法不存在。

我将 Adobe Acrobat 7.0 Browser Control Type Library 1.0 COM 引用加载到我的项目中,并将 Adobe PDF Reader COM 组件添加到我的工具箱(工具/选择工具箱项.../COM 组件)。

怎么了?我应该如何使用这个库打开 PDF 文件?网上找了很多教程,大家都说要使用LoadFile方法...请大家帮忙,谢谢!

【问题讨论】:

  • 您是否尝试使用该方法并查看是否有编译器错误? (忽略它没有出现在智能感知中的事实)它接收一个字符串参数,该参数应该包含一个 pdf 文件的路径
  • 是的,存在编译器错误:“错误 1 ​​'AxAcroPDFLib.AxAcroPDF' 不包含 'LoadFile' 的定义,并且没有扩展方法 'LoadFile' 接受'AxAcroPDFLib.AxAcroPDF' 类型的第一个参数可以找到(您是否缺少 using 指令或程序集引用?”
  • 您的应用使用的是哪个版本的 .Net 框架?尝试更改.Net framework的版本,可能是AxAcroPDFLib LoadFile与.Net framework的某个版本不兼容。
  • .NET 4.0 我现在尝试将其更改为.NET 4.5,但问题是一样的。
  • 你有4.5.1版本吗?

标签: c# pdf adobe


【解决方案1】:

以防万一有人仍然需要解决方案。 我正在使用 Adob​​e Acrobat DC,实际上有 AxAcroPDF.LoadFile() 方法。但是,它不起作用,即没有任何事情发生:/

所以,我使用 AxAcroPDF.src 属性和本地文件的 url

axAcroPdf1.src = "file:///c:/my.pdf"

希望对你有帮助

【讨论】:

    【解决方案2】:

    将表示您的控件(AxAcroPDFLib.AxAcroPDF 类型)的对象转换为AcroPDFLib.IAcroAXDocShim 接口:

    var acro = (AcroPDFLib.IAcroAXDocShim)axAcroPDFControl.GetOcx();
    acro.LoadFile(fileName);
    

    似乎所有有用的方法现在都可以在此界面下使用。如果安装了 Adob​​e Reader DC,则可以使用。

    可以定义一点扩展:

    public static class AcroExtensions
    {
        public static AcroPDFLib.IAcroAXDocShim AsAcroPDF(this AxAcroPDFLib.AxAcroPDF source)
        {
            return (AcroPDFLib.IAcroAXDocShim)source.GetOcx();
        }
    }
    

    然后你可以写:

    axAcroPDFControl.AsAcroPDF().LoadFile(fileName)
    

    【讨论】:

      【解决方案3】:

      这仍然是可能的。您只需要以不同的方式调用该方法。

      public void LoadFile(string path)
      {
          this.GetOcx().GetType().InvokeMember("LoadFile", BindingFlags.InvokeMethod | 
            BindingFlags.OptionalParamBinding, null, this.GetOcx(), new object[1] { path });
      }
      

      见this post for details.

      【讨论】:

      • 像这样使用 System.Reflection 实际上对我有用。为什么有些人不喜欢它?
      • 我认为不赞成票是因为我的原始答案只有一个指向源帖子的链接,而不是完整的代码。
      【解决方案4】:

      Adobe Reader DC 不再支持此功能。安装 Adob​​e Reader v11 即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-25
        • 1970-01-01
        • 2017-04-11
        • 1970-01-01
        • 2021-01-31
        • 1970-01-01
        • 2014-03-16
        相关资源
        最近更新 更多