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

WPF应用中WebView2 PDF查看器如何修改另存为PDF默认文件名

解决WebView2 PDF查看器另存为默认文件名的问题

可以实现,核心思路是拦截WebView2的下载事件,修改PDF下载时的默认文件名,无需修改磁盘上原随机名PDF文件。

具体实现步骤:

  • 确保WebView2控件完成初始化,在CoreWebView2InitializationCompleted事件中订阅下载拦截事件。
  • 利用CoreWebView2.DownloadStarting事件捕获PDF的下载请求(即用户点击“另存为PDF”的操作),在事件处理中修改默认保存文件名。

代码示例(WPF后台逻辑)

private void WebView2_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
{
    if (e.IsSuccess)
    {
        // 订阅下载开始事件
        webView2.CoreWebView2.DownloadStarting += CoreWebView2_DownloadStarting;
    }
}

private void CoreWebView2_DownloadStarting(object sender, CoreWebView2DownloadStartingEventArgs e)
{
    // 过滤出PDF格式的下载请求
    if (string.Equals(e.MimeType, "application/pdf", StringComparison.OrdinalIgnoreCase))
    {
        // 从列表视图选中项获取你想要展示的原始文件名(替换成你的实际业务逻辑)
        string targetFileName = YourListView.SelectedItem.OriginalFileName + ".pdf";
        
        // 拼接系统默认下载路径与目标文件名,生成完整路径
        string defaultDownloadDir = Environment.GetFolderPath(Environment.SpecialFolder.Downloads);
        e.ResultFilePath = Path.Combine(defaultDownloadDir, targetFileName);
        
        // 标记事件已处理,确保修改生效
        e.Handled = true;
    }
}

原理说明

用户点击PDF查看器内的“另存为PDF”时,WebView2的Chromium内核会触发下载操作。通过DownloadStarting事件拦截该请求,设置ResultFilePath为指定的文件名(结合系统默认下载路径),此时弹出的保存对话框会默认使用你设置的文件名,而磁盘上的原随机名PDF文件不会被修改——我们只是修改了下载目标的默认名称,原文件保持不变。

注意事项

  • 确保使用的WebView2 Runtime版本足够新,DownloadStarting事件在较旧版本中可能未被支持。
  • targetFileName需要根据你的业务逻辑获取(比如列表视图选中项对应的原始文件名),替换示例中的占位逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:30:10