下载 PNG 格式的 Blob

Download a Blob in PNG Format

首先祝大家圣诞假期愉快!

我指定我是 JS 的初学者,因此我可能会尝试以 PNG 格式下载我的 Blob。

我的问题是通过单击按钮(class 的名称以 pdf 或图像格式导出 DIV 的所有图形内容div 始终相同)

经过一些研究,我了解到我必须将 div 转换为 canva 才能下载它。 我试图从这个 post 改编代码: How to take screenshot of a div with JavaScript?

但是当我点击按钮时,尽管我进行了各种修改和测试,但没有任何反应...

这是我的代码预览:

<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Export Visualisation QS</title>
</head>
<body>
    <div class="qvt-sheet-container">
        <h1>EXPORT PNG</h1> 
        <img src="Logo-Qlik.png">
    </div>
    <a id="link"><button id="btn-export-qs">Export PNG</button></a>
</body>

<script language="JavaScript" type="text/javascript" src="jquery-3.6.0.min.js">
var a = document.getElementById("link");
function export_feuille() {
    $("#btn-export-qs").click(function() {
        html2canvas($(".qvt-sheet-container"), {
            onrendered: function(canvas) {
                //theCanvas = canvas;
                canvas.toBlob(function(blob) {
                    //saveAs(blob, "Dashboard.png");
                    url = window.URL.createObjectURL(blob);
                    a.href = url;
                    a.download = "export_qs.png";
                    a.click();
                    window.URL.revokeObjectURL(url);
                });
            }
        });
    });
};

document.getElementById("btn-export-qs").addEventListener ("click", export_feuille, false);

</script>
</html>

如果有人能告诉我哪里出了问题或指出我的方向,我将不胜感激:)

据我所知,您的代码中有些代码是多余的。

在你的代码中

document.getElementById("btn-export-qs").addEventListener ("click", export_feuille, false);

以上代码表示您已经为按钮添加了点击事件。单击按钮时它会调用 export_feuille 函数,在 export_feuille 中您使用 jQuery 再次执行此操作,这是不合理的。

你在<a>里面包裹了一个<button>,当按钮按下的时候会使用a标签来触发下载事件,你不需要。请尝试以下操作:

Html:我删除了<a>

<div class="qvt-sheet-container">
    <h1>EXPORT PNG</h1>
    <img src="your-image.jpg" style="width: 150px;height: 150px">
</div>

<button id="btn-export-qs">Export PNG</button>

Javascript:

$("#btn-export-qs").click(function () {
    html2canvas(
        document.querySelector('.qvt-sheet-container'),
        {
            allowTaint: true,
            useCORS: true
        }
    ).then(canvas => {
        download(canvas)
    })
});

const download = function (canvas) {
    const link = document.createElement('a');
    link.download = 'filename.png';
    link.href = canvas.toDataURL()
    link.click();
}

完整代码here