尝试使用AxAcroPDFLib打开PDF

时间:2015-04-29 19:35:43

标签: c# pdf adobe

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

问题是,如果我尝试使用LoadFile()方法,则表示此方法不存在。

我将 Adob​​e Acrobat 7.0浏览器控件类型库1.0 COM引用加载到我的项目中,并将 Adob​​e PDF Reader COM组件添加到我的工具箱中(工具/选择工具箱项目...... / COM组件)。

enter image description here

有什么问题?我该如何用这个库打开PDF文件?我在互联网上找到了很多教程,每个人都告诉我必须使用LoadFile方法...请帮助,谢谢!

4 个答案:

答案 0 :(得分:3)

Adob​​e Reader DC不再支持此功能。安装Adobe Reader v11,它将起作用。

答案 1 :(得分:2)

以防任何人仍然需要解决方案。 我使用的是Adobe Acrobat DC,实际上有AxAcroPDF.src方法。但是,它没有工作,即没有任何事情发生:/

所以,我使用axAcroPdf1.src = "file:///c:/my.pdf" 属性和url作为本地文件

--jar

希望有所帮助

答案 2 :(得分:1)

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

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.

答案 3 :(得分:1)

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

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

现在可以在此界面下使用所有有用的方法。如果安装了Adobe Reader DC,则可以正常工作。

可以定义一点扩展名:

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

然后你可以写:

axAcroPDFControl.AsAcroPDF().LoadFile(fileName)