Показать сообщение отдельно
  #4 (permalink)  
Старый 27.01.2021, 09:04
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

В общем сделал так.
На серваке поместил файл print.html
<!doctype html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<title></title>
<style>
</style>
</head>
<body>         
</body>
</html>


А печать делаю так
let winprint = null;    // окно для печати

const print = (s, nd) => {
		winprint.document.querySelector('title').textContent = 'Документ № '+nd;
		winprint.document.body.innerHTML = s
		winprint.print()
}

let numdoc = 'ВФ-1234';    // типа номер документа

document.getElementById('bp').addEventListener('click', () => {
	let sdoc = document.getElementById('dprint').outerHTML;
	if (!winprint || winprint.closed) {
		winprint = window.open ('print.html#' + numdoc, 'print', "left=0,top=0,width=700,height=600");
		winprint.onload= ()=>{
			print(sdoc, numdoc);
		}
	} else {
		winprint = window.open ('print.html#' + numdoc, 'print', "left=0,top=0,width=700,height=600");
		print(sdoc, numdoc);
	}
})

Открытие окна с url 'print.html#' + numdoc помещает этот url в нижний колонтитул печатаемых страниц. А в верхнем колонтитуле будет содержимое <title>
Есть правда некоторые непонятки по коду (делал просто научным тыком). Если после печати документа, не закрывать окно, а потом снова сделать window.open ('print.html#' + numdoс ....) уже с другим номером документа, то событие onload не возникает. Почему???
Отсюда и пришлось делать проверку и печатать без onload (строки 18-21)

При сохранении в pdf предлагаемое имя файла все равно только print.pdf без всякого номера (#номер).
Абидна.

Последний раз редактировалось voraa, 27.01.2021 в 11:25.
Ответить с цитированием