Trying to open a PDF with AxAcroPDFLib

早过忘川 提交于 2019-12-22 12:18:08

问题


I have installed the latest Adobe Reader on my PC (Adobe Acrobat Reader DC). Now I would like to use AxAcroPDFLib in C# to open and show a PDF file in my Windows Forms application.

The problem is, if I am trying to use the LoadFile() method, then it says that this method is not exist.

I loaded the Adobe Acrobat 7.0 Browser Control Type Library 1.0 COM reference into my project, and I added the Adobe PDF Reader COM Component to my toolbox (Tools / Choose Toolbox Items... / COM Components).

What is wrong? How should I open a PDF file with this library? I found a lot of tutorials on the internet, and everybody tells that I have to use the LoadFile method... Please help, thanks!


回答1:


This is no longer supported in Adobe Reader DC. Install Adobe Reader v11 and it will work.




回答2:


Just in case anyone still needs a solution. I'm using Adobe Acrobat DC and actually have AxAcroPDF.LoadFile() method. However, it doesn't work i.e. nothing happenns :/

So, I used AxAcroPDF.src property with url for local file

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

Hope it helps




回答3:


This is still possible. You just need to invoke the method differently.

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

See this post for details.




回答4:


Cast object representing your control (of type AxAcroPDFLib.AxAcroPDF) to AcroPDFLib.IAcroAXDocShim interface:

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

It appears that all useful methods are now available under this interface. Works if Adobe Reader DC is installed.

A little extension can be defined:

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

Then you can write:

axAcroPDFControl.AsAcroPDF().LoadFile(fileName)


来源:https://stackoverflow.com/questions/29952970/trying-to-open-a-pdf-with-axacropdflib

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!