Преобразование div в изображение и его печать

166
01 июня 2019, 21:30

Хочу распечатать содержимое div со стилями и т.п. Решил преобразовать содержимое в картинку, а после распечатать. Для преобразования воспользовался библиотекой html2canvas. После этого попытался создать новое окно, поместить туда изображение и вызвать печать.

printTable() {
    let printContents = document.getElementById('results_table');
    html2canvas(printContents).then(function(canvas) {
        let win = window.open();
        win.document.write("<br><img src='"+canvas.toDataURL()+"'/>");
        win.print();
    });
}

При вызове функции открывается новое окно и диалог печати, но в предварительном просмотре отображается пустая чистая страница.

Если же закрыть диалог печати, то на самой странице изображение будет присутствовать.

Если после этого нажать ctrl+P, то откроется диалог печати, где в предварительном просмотре будет фото и его можно будет без проблем распечатать.

Что я делаю не так? И как можно при вызове функции реализовать задуманное - преобразование содержимого div в изображение и его печать?

Answer 1

Дело в том, что данные добавлялись дольше, чем открывался диалог печати. Сделал функцию асинхронной

printTable() {
    let printContents = document.getElementById('results_table');
    html2canvas(printContents).then(async function(canvas) {
        let win = window.open();
        await win.document.write("<br><img src='"+canvas.toDataURL()+"'/>");
        win.print();
    });
}
READ ALSO
Ошибка при попытке выполнить map в React

Ошибка при попытке выполнить map в React

Мне нужно получить с интернета данные, с этим я разобрался - получаю, и сразу же добавляю их в состояние компонента

153
Как найти точку на расстоянии d от прямой?

Как найти точку на расстоянии d от прямой?

Есть ломаная (задана массивом точек) и нужно найти ломаную, огибающую исходную, наверное более понятно будет на рисунке (синяя - та, которую...

159
Слайдер с бесконечной прокруткой

Слайдер с бесконечной прокруткой

Как сделать слайдер с бесконечной прокруткой, где при нажатии на правую стрелку, например, первый блок за пределами страницы перемещается...

144
Подгрузка внешних JS скриптов &ldquo;по событию&rdquo;

Подгрузка внешних JS скриптов “по событию”

Хочу реализовать следующий подход - подключать некоторые внешние скрипты только если на странице присутствуют DOM элементы использующие...

153