You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF WebBrowser预览PDF触发下载而非显示的问题求助

WPF WebBrowser预览本地PDF问题解决办法

方法1:用HTML嵌入方式调用IE预览组件

WebBrowser直接导航PDF会触发下载,换用HTML包装后通过NavigateToString加载,能触发IE的PDF预览功能:

string pdfPath = @"C:\Users\Public\Documents\TempFiles\document.pdf";
// 生成嵌入PDF的HTML内容
var embedHtml = $@"
<html>
<body style='margin:0;padding:0'>
<object data='file:///{pdfPath.Replace(@"\", "/")}' type='application/pdf' width='100%' height='100%'>
    无法预览PDF,请确认已安装PDF阅读器并启用IE预览功能
</object>
</body>
</html>";
// 加载HTML到WebBrowser
browser.NavigateToString(embedHtml);

注意:需要系统里IE的PDF预览功能处于开启状态(默认是开的,若没开可去IE设置里启用“在浏览器中显示PDF”)。

方法2:替换为WebView2控件(推荐)

旧WebBrowser基于IE,对PDF支持有限,改用微软推荐的WebView2(基于Edge Chromium),原生支持PDF预览:

  1. 安装NuGet包:Microsoft.Web.WebView2
  2. XAML中添加控件:
<Window ... xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf">
    <wv2:WebView2 x:Name="webView2" />
</Window>
  1. 代码里加载PDF:
string pdfPath = @"C:\Users\Public\Documents\TempFiles\document.pdf";
// 初始化WebView2
await webView2.EnsureCoreWebView2Async();
// 导航到本地PDF
webView2.CoreWebView2.Navigate(new Uri(pdfPath).AbsoluteUri);

方法3:检查IE的PDF关联设置

如果一定要用WebBrowser,可检查注册表确保IE能识别PDF:

  • 打开注册表编辑器,找到HKEY_CLASSES_ROOT\.pdf,确认Content Type值为application/pdf
  • 检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{CA8A9780-280D-11CF-A24D-444553540000},如果存在这个项(对应Adobe的PDF ActiveX控件),可能会阻止IE预览,可尝试删除该键(操作前备份注册表)

内容的提问来源于stack exchange,提问作者Diego Schram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:25:05