2013-04-26 37 views
3

我创建了一个32位WPF application.It需要显示在WebBrowser控件创建PDF PDF文件。 虽然这样做,WPF web浏览器中打开在Adobe Reader窗口

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

它打开在Adobe Reader窗口PDF文件。

我需要的是PDF里面应该没有web浏览器在Adobe Reader窗口中打开。 我也试过WebBrowser.NavigateToStreamWebBrowser.Source但它不工作。

什么可以解决这个问题?我期待着寻求帮助。

回答

4

你检查,你已经安装了Internet Explorer中的Adobe阅读器?您还应该验证您的Internet Explorer是否允许打开嵌入的PDF文件。

有时helpes,使用另一个Internet Explorer渲染引擎。可以使用以下代码将其归档(请注意:需要管理员权限)。

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. 
    */ 
} 
+1

我发现使用帧间操作只是一个简单的事情。使用adobe阅读器添加用户控件(Winform)并使用互操作性将其放入wpf – nullrefereceexception 2013-05-21 09:26:27

+0

@Bernhard Krenz,此代码适用于32位窗口,但不适用于64位版本。 – MuhammadHani 2014-01-06 15:30:46

相关问题