Показать сообщение отдельно
  #6 (permalink)  
Старый 25.09.2018, 22:59
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Сообщение от Aetae Посмотреть сообщение
Во первых:
Загрузка <script> по адресу «[url]https://github.com/MrRio/jsPDF/blob/master/dist/jspdf.min.js»[/url] не удалась.
Загрузка <script> по адресу «[url]https://github.com/stackp/promisejs/blob/master/promise.js»[/url] не удалась.
(github не любит jsfiddle)

Во вторых функция getPDF созданная внутри анонимной функции, вызываемой по событию load, доступна только внутри этой самой функции.
По сути у вас и скрипты не подключены и функция по нажатию не может быть вызвана. Оно не то что не работает, оно и не пытается.

laimas, заказчик хочет пдф - будет ему пдф.
Aetae,
понял. Давайте так: сделал некий набросок на тестовом сервере по ссылке
http://a-lot-of-money.ru/rasterize/
Что добился: канвас создается, pdf скачивается, вот только без данных, которые записывает канвас, т.е. по сути успевает отработать раньше, чем рендерится картинка. Если этот момент исправить - все заработает.
Здесь колбек без дополнительных параметров меня не спасает..
Делаю так, когда по первому клику на кнопку получаю зарендеренную страницу, но скачивается все равно только статика, которая была изначально. Вот здесь встрял и не знаю куда дальше двигаться
function getPDF() {
		    doCanvas();

		    $(document).bind('function_a_complete', doPDF);
		}

		function doCanvas() {
			html2canvas(document.querySelector("#myDiv")).then(canvas => {
			    document.querySelector("#newDiv").appendChild(canvas);
			});
			$(document).trigger('function_a_complete');
		}
		function doPDF() {
			console.log("do pdf");
			var doc = new jsPDF();
		    doc.fromHTML($('#newDiv').get(0), 20, 20, {'width':500});
			doc.save('test.pdf');
		}

Последний раз редактировалось giwuf, 25.09.2018 в 23:26.
Ответить с цитированием