Быстрая печать HTML5 Canvas

Я хочу отправить / распечатать изображение холста напрямую на принтер по умолчанию. Это означает быструю печать.

Любой может дать подсказку.

Javascript или JQuery.

 Derin16 окт. 2012 г., 00:22
toDataURL (), предоставьте нам данные изображения с холста. Я хочу отправить его прямо на принтер.
 Felix Kling10 окт. 2012 г., 01:43
С чем у тебя проблемы? Печать изображения или получение его с холста? Или оба? Пожалуйста, будьте более конкретны. Кроме того, что вы пробовали до сих пор?

Ответы на вопрос(3)

что при первой печати полотно было пустым. Я добавил прослушиватель событий, чтобы дождаться загрузки изображения / документа. Теперь холст готов к печати каждый раз. Вот's код, который работает для меня:

const dataUrl = document.getElementById('the-pdf-canvas').toDataURL(); 

let windowContent = '';
windowContent += '';
windowContent += '<title>Print canvas</title>';
windowContent += '';
windowContent += '<img src="' + dataUrl + '">';
windowContent += '';
windowContent += '';

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);
 Aung Myat Hein17 июл. 2018 г., 09:36
Оно работало завораживающе!

ссылка на сайт, Это дает краткое руководство о том, как это сделать, но по сути вы получаете ссылочный URL с:toDataURL() и затем создайте img с тем же размером, назначив его src URL.

Это дает лучший шаг за шагом, что делать в HTML и CSS, так что просто посмотрите нассылка на сайт если ты нене понимаю, что я сказал.

Примечание. Я предполагал, что у вас возникли проблемы с взаимодействием с канвой для печати, но если вместо этого у вас возникли проблемы с драйвером принтера, то это, вероятно, бесполезно для вас.

 Derin16 окт. 2012 г., 00:23
toDataURL (), предоставьте нам данные изображения с холста. Я хочу отправить его прямо на принтер.
 Tom Prats16 окт. 2012 г., 00:25
Я знаю, но вы можете временно создать изображение, а затем распечатать это изображение. и тогда вы можете удалить изображение. я не знаю ни одного способа напрямую сделать это с помощью холста, чтобы оннемного обойти
 Derin17 окт. 2012 г., 05:28
ок, вот и все. но как мы молча сохраняем образ на жестком диске? и как отправить это изображение на принтер? пара строк кода будут оценены.
Решение Вопроса

) Используетсяпо щелчку событие

function printCanvas()  
{  
    var dataUrl = document.getElementById('anycanvas').toDataURL(); //attempt to save base64 string to server using this var  
    var windowContent = '';
    windowContent += ''
    windowContent += '<title>Print canvas</title>';
    windowContent += ''
    windowContent += '<img src="' + dataUrl + '">';
    windowContent += '';
    windowContent += '';
    var printWin = window.open('','','width=340,height=260');
    printWin.document.open();
    printWin.document.write(windowContent);
    printWin.document.close();
    printWin.focus();
    printWin.print();
    printWin.close();
}
 daehaai03 нояб. 2014 г., 15:21
Это не работает для меня. Это дает мне диалоговое окно печати, а не печать без вывода сообщений на принтер по умолчанию
 Besat08 июн. 2016 г., 20:22
очень интересно! но для моего кода, когда он попадает в printWin.document.open (); Я получаю эту ошибку: не могу прочитать свойство 'открыть' неопределенного. printWin.document не определен
 Auspex28 сент. 2017 г., 16:02
Это то, что мне нужно, но будьте осторожны! У моей страницы очень медленно загружаемое изображение.printWin.print() может быть вызвандо страница загружена. Лучше добавить немного JavaScript вhead созданной страницы:window.onload = function () { window.print(); window.close();} и пропустите последние два утверждения в этом примере.
 Jo E.14 нояб. 2014 г., 03:57
@PreyashDesai Если я правильно помню, при печати с использованием javascript диалоговое окно печати всегда будет отображаться перед печатью, чтобы предложить пользователю.

Ваш ответ на вопрос