我们有一个.NET C#应用程序,它使用Adobe ActiveX控件.对于Adobe Acrobat和Adobe Reader的版本7-10,要使用此控件,您需要打开"在浏览器中显示PDF"设置.您可以使用GUI从GUI手动执行此操作
Preferences > Internet > Display PDFs in browser
Run Code Online (Sandbox Code Playgroud)
或通过直接设置注册表设置以编程方式
HKEY_CURRENT_USER\Software\Adobe\(Product Name)\(Version)\Originals
"bBrowserIntegration"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
其中包含SDK参考http://www.adobe.com/devnet-docs/acrobatetk/tools/PrefRef/Windows/Originals.html#BrowserIntegration.当我们的客户拥有Adobe Reader或Adobe Acrobat的7-10版本时,我们的应用程序一直在以编程方式设置此注册表值.上面的链接还表明bBrowserIntegration在XI(11)中不推荐使用此注册表项.旧版注册表路径仍然存在于新版本中,即:
HKEY_CURRENT_USER\Software\Adobe\(Product Name)\(Version)\Originals
Run Code Online (Sandbox Code Playgroud)
但是,bBrowserIntegration正如文档所示,不再有密钥,它已被弃用.
只要启用了"在浏览器中显示PDF",Adobe ActiveX Control似乎仍可以正常工作,就像它一直有效一样.
对于版本XI(11)和DC,有两个已发布的链接,清楚地显示如何手动实现此目的:
XI (11): https://helpx.adobe.com/acrobat/11/using/display-pdf-browser-acrobat-xi.html
DC (current): https://helpx.adobe.com/acrobat/using/display-pdf-in-browser.html
Run Code Online (Sandbox Code Playgroud)
在测试Adobe Reader DC时,如果我们没有完成在浏览器中为新客户安装启用显示PDF的步骤,那么我们的应用程序将抛出一个COM error,然后如果我们按照上面链接中的说明启用设置,一切正常正如我们的应用程序预期的那样,它使用Adobe ActiveX控件呈现PDF,这与我们期望在未设置注册表设置时在旧版本(7-10)中看到的类似(请参阅我之前的旧帖子和我自己的解决方案)如何逐步诊断原因,修复或解决与Adobe ActiveX/COM相关的错误0x80004005?).
因此,问题仍然是,通过相应地设置注册表设置bBrowserIntegration,对于今天的XI或DC中的手动过程或等同于7-10中的手动过程,预期的程序等效是什么.我们希望能够打开它,然后在我们的应用程序结束时将其重置为之前的设置(因此我们的应用程序不会因为我们的应用程序需要而强制用户保留设置)这就是我们今天所做的7 -10.
我似乎无法在线找到任何从开发人员角度启用/禁用浏览器集成的参考资料,因此我们的应用程序可以继续使用ActiveX控件而不会显示COM错误,从而强制用户手动更改此错误.
首要任务是了解DC的解决方案,因为这代表了Adobe Acrobat/Reader的新范例.