我有一张图片,转换为图片画布(我使用canvas2image.js插件执行此操作):
function draw_voucher_img()
{
var canvas = $("#canvas_voucher")[0];
var voucher = canvas.toDataURL();
$("#voucher_img").attr("src", voucher);
}
然后点击按钮我要打印该图像。我正在使用jquery.printElement.min.js插件来执行此操作:
$("#div_print_voucher").click(function() {
print_voucher();
});
function print_voucher()
{
$("#voucher_img").printElement();
}
除了... Internet Explorer之外,它适用于所有浏览器。在资源管理器中,它不会打印图像,而是打印页面的其余部分。有没有其他方法可以让它在IE中运行?
的 的 **更新**
有没有其他方法可以使用JS或jQuery打印元素?如果有,那么也许可能以某种方式检查用户的浏览器是否是IE:如果是:使用一种打印方法,如果不是 - 使用上述功能。
* 从未解决,问题已解决 *
答案 0 :(得分:1)
也许这不是最优雅的解决方案,但它对我有用。我发现a piece of code用于打印HTML5画布 - 它将画布转换为图像,在正文中创建一个仅包含<img...>
标记的弹出窗口,将转换后的图像设置为源,弹出打印对话框,一旦打印开始,它将关闭该弹出窗口。所以现在我只需要检查浏览器是IE还是其他浏览器。如果它是IE - 使用上面提到的代码,如果它是其他浏览器 - 使用问题中提到的功能。所以完整的代码现在看起来像这样:
function print_voucher()
{
var ua = navigator.userAgent;
if(ua.search(/MSIE/) > 0)
{
var dataUrl = document.getElementById('canvas_voucher').toDataURL();
var windowContent = '<!DOCTYPE html>';
windowContent += '<html>'
windowContent += '<head><title>Print voucher</title></head>';
windowContent += '<body>'
windowContent += '<img src="' + dataUrl + '">';
windowContent += '</body>';
windowContent += '</html>';
var printWin = window.open('','','width=788,height=499');
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.close();
printWin.focus();
printWin.print();
printWin.close();
} else {
$("#voucher_img").printElement();
}
}