2015-04-29 424 views
1

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

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

我装了使用Adobe Acrobat 7.0浏览器控件的类型库1.0 COM引用到我的项目,我添加了的Adobe PDF阅读器 COM组件到我的工具箱(工具/选择工具箱项.../COM组件) 。

enter image description here

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

+1

你尝试使用的方法,看看是否你有编译器错误或没有? (忽略它不显示在intellisense中的事实)它收到一个字符串参数,该参数应包含pdf文件的路径 –

+0

是的,存在编译器错误:“错误'AxAcroPDFLib.AxAcroPDF'不包含定义为'LoadFile',并且没有找到接受类型'AxAcroPDFLib.AxAcroPDF'的第一个参数的扩展方法'LoadFile'(可以找到缺少使用指令或程序集引用吗?“ –

+0

您的应用程序使用哪个版本的.Net框架?尝试更改.Net框架的版本,可能是AxAcroPDFLib LoadFile与.Net框架的某个版本不兼容。 –

回答

3

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

1

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

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

看到代表你的控制(AxAcroPDFLib.AxAcroPDF型)this post for details.

+0

像这样使用System.Reflection实际上适用于我。为什么有些人不喜欢它? – gridtrak

+0

我认为downvotes是因为我原来的答案只是链接到源文章,而不是完整的代码。 – Scott

1

演员对象AcroPDFLib.IAcroAXDocShim接口:

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

看来,一切有用的方法现在是这个界面下提供。如果安装了Adobe Reader DC,则适用。

一点点扩展可以定义:

​​

然后,你可以写:

axAcroPDFControl.AsAcroPDF().LoadFile(fileName) 
1

万一有人仍然需要一个解决方案。 我使用的是Adobe Acrobat DC,实际上有AxAcroPDF.LoadFile()方法。但是,这是行不通的,即没有happenns:/

所以,我用AxAcroPDF.src财产网址为本地文件

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

希望它可以帮助