DotNetBrowser支持PDF文件下载的问题

现有一个HTML页面代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta charset="utf-8" />
    <title></title>
  </head>
  <body>
    下载测试
    <br />
    <a href="./download_test/普通昆虫学.pdf">PDF文件测试</a>
  </body>
</html>

使用Chrome浏览器打开后效果如下:

点击此超链接后,浏览器会自动打开指定的PDF文件,而不是将它下载到本地

DotNetBrowser是一个应用于.NET程序的Chromium引擎,也存在这一问题。

建立一个Windows窗体应用程序DotNetBrowserTest,窗体名称定为FormMain,在构造函数调用InitializeComponent方法后继续添加四行代码:

using DotNetBrowser;
using DotNetBrowser.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DotNetBrowserTest
{
    public partial class FormMain : Form
    {
        Browser browser = null;

        public FormMain()
        {
            InitializeComponent();

            //添加以下四行代码
            browser = BrowserFactory.Create();
            WinFormsBrowserView browserView = new WinFormsBrowserView(browser);
            pnlBrowser.Controls.Add(browserView);
            browser.LoadURL((new FileInfo("DotNetBrowserJsTest.html")).FullName); 
            // --DotNetBrowserJsTest.html即本文一开始所列出的HTML代码文件
        }
    }
}

程序运行结果如下:

点击链接后,PDF文件会被直接打开

这是因为Chromium引擎附带的PDF文件读取插件在起作用。如果我们想在点击此超链接后,直接将PDF下载到本地,需要设置我们自己的插件列表。

参考链接:https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000110046-plugins-manager

建立一个新的类CustomPluginFilter,继承自PluginFilter,实现方法IsPluginAllowed

using DotNetBrowser;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DotNetBrowserTest
{
    class CustomPluginFilter : PluginFilter
    {
        public bool IsPluginAllowed(PluginInfo pluginInfo)
        {
            return !pluginInfo.MimeTypes.Contains("application/pdf");
        }
    }
}

再在原窗体的Load函数中,添加下面一行代码,实现对PDF-Viewer插件的禁用

browser.PluginManager.PluginFilter = new CustomPluginFilter();

此时再运行程序可发现,点击指向PDF文件的超链接后,不会再打开PDF文件,而是让用户选择文件要下载到的位置。

END

转载于:https://my.oschina.net/Tsybius2014/blog/1142701

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值