在IE中使用JS或jQuery打印图像

时间:2013-10-09 12:03:47

标签: javascript jquery image internet-explorer printing

我有一张图片,转换为图片画布(我使用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:如果是:使用一种打印方法,如果不是 - 使用上述功能。

* 从未解决,问题已解决 *

1 个答案:

答案 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();
}

}