我试图用html2canvas的div制作一个报价下载系统。但我试图通过这个过程来建立这个系统。但这是行不通的。
这里是Html元素:
**First div:**
<div class="htmltoimage" style="background-color: skyblue;">
<!-- <img width="100px" src="raj2.jpg"> -->
<h1>Dhaka</h1>
<button onclick="downloadimage()" class="clickbtn">Download This</button>
</div>
**First div:**
<div class="htmltoimage" style="background-color: skyblue;">
<!-- <img width="100px" src="raj2.jpg"> -->
<h1>Dhaka</h1>
<button onclick="downloadimage()" class="clickbtn">Download This</button>
</div>这里是html2canvas代码:
function downloadimage() {
var container = $(this).closest('.htmltoimage');
html2canvas(container, {allowTaint: true}).then(function (canvas) {
var link = document.createElement("a");
document.body.appendChild(link);
link.download = "html_image.jpg";
link.href = canvas.toDataURL();
link.target = '_blank';
link.click();
});
}注意:我已经包含了JQuery文件和html2canvas链接。当有人在此时点击第一个div下载时,只有这个div会被下载。就这样,等等……
发布于 2022-09-01 12:59:42
下面是我尝试过的,您可以在单击每个元素时逐一下载全部内容。
您需要选择要下载的所有元素,然后可以进行一串下载或激发事件侦听器来一个接一个地下载。
function download(url) {
var a = $("<a style='display:none' id='js-downloder'>")
.attr("href", url)
.attr("download", "test.png")
.appendTo("body");
a[0].click();
a.remove();
}
function saveCapture(element) {
html2canvas(element).then(function(canvas) {
download(canvas.toDataURL("image/png"));
})
}
var elements = document.querySelectorAll("#capture");
elements.forEach(function(element) {
element.addEventListener('click', function() {
saveCapture(element);
console.log(saveCapture(element));
})
})
//to download all
$('#btnDownload').click(function() {
var elements = document.querySelectorAll("#capture");
elements.forEach(element => {
saveCapture(element);
})
})@import url('https://fonts.googleapis.com/css?family=Noto+Sans:400,700');
.mainContainer {
width: 500px;
height: 600px;
display: flex;
align-items: center;
flex-flow: column;
gap: 20px;
margin: 0 auto;
}
#capture {
margin: 0 auto;
width: 100%;
height: 100px;
overflow: hidden;
}
textarea {
width: 100%;
padding: 2rem .5rem;
border: 0;
text-align: center;
color: #fff;
background: slateblue;
font-family: 'Noto Sans', sans-serif;
font-weight: 700;
font-size: 2rem;
line-height: 1.5;
resize: none;
max-height: 100%;
min-height: 100%;
}
#btnDownload {
background-color: pink;
border: none;
color: #000;
padding: 15px 32px;
text-align: center;
text-decoration: none;
font-size: 16px;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mainContainer">
<a href="#" class="" id="btnDownload">Download</a>
<div id="capture">
<textarea maxlength="110">Click to edit...</textarea>
</div>
<div id="capture">
<textarea maxlength="110">Click to remove...</textarea>
</div>
</div>
你可以试一试,它应该管用的。
https://stackoverflow.com/questions/73568754
复制相似问题