DotNetBrowser支持PDF文件下载的问题

原创
2017/07/03 14:36
阅读数 293

现有一个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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部