我想直接将画布图像发送/打印到默认的打印机。这意味着快速打印。
有人能给个提示吗?
使用Javascript或jQuery。
有人能给个提示吗?
使用Javascript或jQuery。
我进行了大量搜索,并找到了一个完美运作的解决方案 :) 使用了onclick事件
function printCanvas()
{
var dataUrl = document.getElementById('anycanvas').toDataURL(); //attempt to save base64 string to server using this var
var windowContent = '<!DOCTYPE html>';
windowContent += '<html>'
windowContent += '<head><title>Print canvas</title></head>';
windowContent += '<body>'
windowContent += '<img src="' + dataUrl + '">';
windowContent += '</body>';
windowContent += '</html>';
var printWin = window.open('','','width=340,height=260');
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.close();
printWin.focus();
printWin.print();
printWin.close();
}
printWin.print()
可以在页面加载之前调用。
最好在创建的页面的head
中添加一些javascript:window.onload = function () { window.print(); window.close();}
并删除此示例中的最后两个语句。 - Auspex我发现第一次打印时,画布是空白的。我添加了一个事件监听器,等待图像/文档加载完成后再进行打印。现在每次画布都已经准备好进行打印。以下是适用于我的代码:
const dataUrl = document.getElementById('the-pdf-canvas').toDataURL();
let windowContent = '<!DOCTYPE html>';
windowContent += '<html>';
windowContent += '<head><title>Print canvas</title></head>';
windowContent += '<body>';
windowContent += '<img src="' + dataUrl + '">';
windowContent += '</body>';
windowContent += '</html>';
const printWin = window.open('', '', 'width=' + screen.availWidth + ',height=' + screen.availHeight);
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.addEventListener('load', function() {
printWin.focus();
printWin.print();
printWin.document.close();
printWin.close();
}, true);
printJS({printable: document.querySelector("#your-canvas").toDataURL(), type: 'image', imageStyle: 'width:100%'});
更新 @Martin 的回答。
let windowContent = '<!DOCTYPE html>';
windowContent += '<html>';
windowContent += '<head><title>Print canvas</title></head>';
windowContent += '<body>';
windowContent += '<img src="' + dataURL + '">';
windowContent += '</body>';
windowContent += '</html>';
const printWin = window.open('', '', 'width=' + screen.availWidth + ',height=' + screen.availHeight);
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.addEventListener('load', function () {
printWin.focus();
printWin.document.close();
printWin.print();
}, true);
function PrintPDFFunc(ID){
const dataUrl = document.getElementById(ID).toDataURL();
let windowContent = '<!DOCTYPE html><html><head><title>Print</title></head><body><img src="' + dataUrl + '"></body></html>';
const printWin = window.open("", "", "width=" + screen.availWidth + ",height=" + screen.availHeight);
printWin.document.open();
printWin.document.write(windowContent);
printWin.document.addEventListener("load",function(){
printWin.focus();
printWin.print();
setTimeout(function(){
printWin.document.close();
printWin.close();
},901);
},true);
}