Почему не печатаются изображения?
Вывожу на печать данные таким образом:
function printInventoryForm() {
var container = $('<div />');
var winPrint = window.open('','','left=50,top=50,width=800,height=640,toolbar=0,scrollbars=1,status=0');
winPrint.document.write(buildStylesToPrint());
buildHeaderFormToPrint(container);
buidlMainTblFormToPrint(container);
// buildFilterSettingsToPrint(container);
// replace & with &
var code = container[0].outerHTML.replace(/&/g, "&");
winPrint.document.write(code);
//return;
winPrint.document.close();
winPrint.focus();
winPrint.print();
winPrint.close();
}
Пояснения: методы buildHeaderFormToPrintб buidlMainTblFormToPrint создают с помощью jQuery блок для вывода на печать. Блок представляет собой не полную HTML-страницу, а только DIV, в который помещается таблица с данными. В этом блоке есть картинки, которые формируются динамически с помощью php, примерно так: <img src='barc_img.php?t=2&w=250&h=30&d=1234567890' /> В результате открывается окно, в котором есть всё, что должно быть - есть и HTML-разметка, и данные, и картинки. На превью печати есть только таблица с данными, картинок же нет, и, как следствие, их нет на отпечатанном документе. В чём дело? Куда пропадают картинки? |
Изображениям нужно время для загрузки.
|
Спасибо, похоже на то. Но как сделать так, чтобы изображения загрузились?
|
Производить печать по событию загрузки документа - onload.
|
Если убрать команду winPrint.print(), и нажать вместо неё Ctrl-P, то изображения отображаются на превью и выводятся на печать.
|
Я пробовал его подключить - это первое, что попробовал сделать после твоего ответа, но оно не срабатывает. Подключал обработчик так:
winPrint.onload = function() {
alert('loaded');
}
Пытался это сделать и до, и после записи в документ - не срабатывает. |
winPrint.write(code); - записали документ
winPrint.onload = function() { winPrint.print(); - печатаем } в противном случае у вас даже на чих времени не будет, а в печать будет отдано то, что имеет документ на текущий момент. |
Цитата:
PS. Что распечатать, а чего не надо, этим ведь можно управлять и посредством CSS, почему бы не использовать, тогда и излишних окон не потребуется. |
Если добавлять onload после записи в документ, и оставить только alert, то он срабатывает - выскакивает сообщение. Как только добавляю winPrint.print() - всё сбивается, и alert не появляется.
|
Цитата:
Во-вторых, изображения на основной таблице не нужны, они появляются только при печати - это штрих-код, на основной странице он только мешает. |
Цитата:
|
Создал таймер, и вот этот кусок:
winPrint.document.close();
winPrint.focus();
winPrint.print();
winPrint.close();
выполняю с задержкой. В зависимости от её длительности больше ими меньше картинок попадает на печать. В целом, спасибо, дружище, ты мне очень помог, напомнив, что изображениям нужно время на загрузку. :thanks: |
| Часовой пояс GMT +3, время: 03:41. |