我在通过 html2canvas 将 div 渲染为图像时遇到问题。
这是我的 javascript 代码:
function saveImages(i)
{
html2canvas($("#page"+i), {
logging:true,
onrendered: function(canvas){
var url = canvas.toDataURL();
$.post("saveImage.php", {"path": url, "index":i}, function(data){
var p = Math.round(((i+1)/totalPages)*100);
$("#progressGraphical").css("width", p+"%");
if(p>=100){p = "fertig!"}else{p += "%";}
$("#progress").html((i+1)+"/"+totalPages+" Seiten gespeichert - "+p);
if(i<totalPages) saveImages(i+1);
});
}
});
}
$(document).ready(function(){
saveImages(0);
});
Run Code Online (Sandbox Code Playgroud)
由于使用 jquery 函数完成后请求,我不得不递归地工作。请求的 php 文件采用由 canvas.toDataUrl-Method 生成的 base64 编码 url,对其进行解码并将其保存到名为“page0/1/2/.../n.png”的图像文件中。
所有这些工作正常 - 直到超过大约 24 次递归调用的总数。如果是这种情况,那么 html2canvas 生成的所有图像(甚至是第 24 次递归调用之前的图像)都被绘制为空白。我已经看过 base64 编码的 url - 只有两个相等的字符串交替出现。
错误在哪里?
只需将 css background-color:#ffffff 添加到您的表格中:)
希望这可以帮助
我将内容包装到每个所需页面的 div 中,class="pdfpage"然后将 css 设置为pdfpage{background:#FFFFFF;}
正如我所评论的,我首先想到的并不是我需要将渲染元素的背景设置为白色,因为它已经是白色的了......但事实上它是无色的......
复制我的答案: https ://stackoverflow.com/a/25457584/1815624