WPF Webbrowser在Adobe Reader窗口中打开PDF文件 [英] WPF webbrowser opens PDF file in Adobe reader window

查看:295
本文介绍了WPF Webbrowser在Adobe Reader窗口中打开PDF文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个32位WPF应用程序.它需要在WebBrowser控件中显示创建的PDF. 这样做时,

I am creating one 32bit WPF application.It needs to show created PDF in WebBrowser control. While doing ,

"WebBrowser.Navigate(new Url("D:\\TestPDF\\MyDocument.pdf"))";

它会在Adobe Reader窗口中打开PDF文件.

it opens PDF file in Adobe reader window.

我的需求是PDF应该在WebBrowser中打开,而不是在Adobe Reader窗口中打开. 我也尝试过WebBrowser.NavigateToStreamWebBrowser.Source,但是它不起作用.

My Need is PDF should be opened inside WebBrowser not in Adobe reader window. I have also tried WebBrowser.NavigateToStream and WebBrowser.Source but its not working.

对此有什么解决方案?我期待获得帮助.

What can be solution for this? I am looking forward for help.

推荐答案

您是否检查过是否已为Internet Explorer安装了Adobe Reader?您还应该验证是否允许Internet Explorer打开嵌入的PDF文件.

Have you checked, that you have the Adobe reader installed for the Internet Explorer? You should also verify, that your Internet Explorer is allowed to open PDF-Files embedded.

使用另一个Internet Explorer渲染引擎有时会有所帮助.可以使用以下代码将其归档(警告:需要管理员权限).

Sometimes it helpes, to use another Internet Explorer Rendering Engine. This can be archived in with the following code (be warned: Administrator rights are needed for that).

private void CheckAndFixWebBrowserRenderingEngine()
{
    RegistryKey baseRegistryKey = Registry.LocalMachine;
    string renderingEngineSubKeyString = @"SOFTWARE";

    // 64bit operationg systems have another registry path
    if (Environment.Is64BitOperatingSystem)
    {
        renderingEngineSubKeyString += @"\Wow6432Node";
    }

    renderingEngineSubKeyString += @"\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";

    var assemblyValueKey = Path.GetFileName(App.ResourceAssembly.Location);
    var renderingEngingeValue = 9999; // check other values below

    try
    {
        RegistryKey sk1 = baseRegistryKey.CreateSubKey(renderingEngineSubKeyString);

        var value = sk1.GetValue(assemblyValueKey);
        if (value == null || value.ToString() != renderingEngingeValue.ToString())
        {
            sk1.SetValue(assemblyValueKey, renderingEngingeValue);

            LogHandler.Instance.Add(string.Format("Did update webbrowser rendering engine from {0} to 9000.", value == null ? "[missing]" : value));
        }
    }
    catch (Exception ex)
    {
        LogHandler.Instance.Add("Could not check webbrowser rendering engine in registry.");
        LogHandler.Instance.Add(ex.ToString(), Logging.LoggingPriorities.Exception);
    }

    /*
    9999 (0x270F) 
    Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.

    9000 (0x2328) 
    Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.

    8888 (0x22B8) 
    Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.

    8000 (0x1F40) 
    Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.

    7000 (0x1B58) 
    Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.
    */
}

这篇关于WPF Webbrowser在Adobe Reader窗口中打开PDF文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆