首页 > 解决方案 > 将链接另存为 PDF C#

问题描述

我需要自动下载 pdf 文件。下面的示例链接

<a href="https:\\..?serachid=1" 
onclick="window.open(this.href,'popupwindow','scrollbars=no,resizable=no')return false" >click to 
download</a>

链接的 href 末尾没有 .pdf。单击链接时,我得到了嵌入 pdf 的 IE 弹出窗口。单击弹出窗口中的打印会生成一个处理窗口,该窗口需要很长时间才能退出,我们无法跟踪进度。如果我手动单击它,而是单击保存复制按钮(来自下面显示的传单很好),但我找不到从代码中单击相同按钮的方法。)

我正在寻找右键单击并单击“目标另存为”的选项或单击“保存副本”按钮的选项 在此处输入图像描述 我已经尝试退出很多建议仍然无法找到适用的解决方案我,请帮忙。

注意:我无法修改 html。而且我不能使用硒。

[编辑] 我尝试如下添加下载属性,仍然弹出 IE,而不是预期的直接下载选项。

<a href="https:\\..?serachid=1" 
onclick="window.open(this.href,'popupwindow','scrollbars=no,resizable=no')return false" download="">click to 
download</a>

标签: c#internet-explorerautomationwatin

解决方案


IE 不支持download属性,<a>所以它在 IE 中不起作用。您可以查看浏览器兼容性表

对于 IE,如果要点击链接下载,只能将 pdf 文件转换为 blob 数据,然后使用msSaveBlob. msSaveBlob是 IE 自己的用于创建和下载文件的 API。你可以参考下面的代码:

<a href="your_file_link" onclick="downloadpdf();return false">click to download</a>
<script>
    function downloadpdf() {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {
                //console.log(this.response, typeof this.response);
                window.navigator.msSaveBlob(this.response, 'testpdf.pdf'); 
            }
        }
        xhr.open('GET', 'your_file_link');
        xhr.responseType = 'blob';
        xhr.send();  
    }
</script>

IE 11 中的结果: 在此处输入图像描述


推荐阅读