Javascript.RU

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

Конвертация HTML страницы в PDF
Хочу сконвертировать html страницу в pdf средствами javascript.
Делаю это используя библиотеки
по инструкции из видео
Но, получаю в консоли запись:
html2canvas: Canvas renderer initialized (2543x739 at 0,0) with scale 1
и соответственно файл не сохраняется. Можно это как-то поправить или какой-то другой метод использовать?
Сделал 2 наглядных образца
старая версия библиотеки html2canvas с onrendered
http://jsfiddle.net/bwLzno6t/
новая с использованием then(canvas =>
http://jsfiddle.net/vd237at6/
В обоих случая в примерах не работают, на моем тестовом примере удается в новой версии получить скрин страницы, но отправить в pdf не получается..

Последний раз редактировалось giwuf, 25.09.2018 в 21:39.
Ответить с цитированием
  #2 (permalink)  
Старый 25.09.2018, 21:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

Сообщение от laimas Посмотреть сообщение
А проку от такого PDF, не проще ли просто изображение?
laimas,
суть в том, чтобы сделать и сохранить док именно в pdf, но да, оно по сути иммитация картинки
Ответить с цитированием
  #4 (permalink)  
Старый 25.09.2018, 22:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от giwuf
оно по сути иммитация картинки
Скорее наоборот, имитация PDF, в нем от PDF, в смысле пользы, 0,00001%. И просматривать неудобно, и стороннее ПО нужно, которое без пользы в данном случае.
Ответить с цитированием
  #5 (permalink)  
Старый 25.09.2018, 22:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Во первых:
Загрузка <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, заказчик хочет пдф - будет ему пдф.
__________________
29375, 35
Ответить с цитированием
  #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.
Ответить с цитированием
  #7 (permalink)  
Старый 26.09.2018, 04:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Aetae
заказчик хочет пдф - будет ему пдф.
Да, заказчик бывает и как диагноз. )

Есть конверторы html-pdf, для серверной части я как-то использовал такую библиотеку, интересно есть ли подобные решения для клиента или же как сторонний сервис через клиентское API.
Ответить с цитированием
  #8 (permalink)  
Старый 26.09.2018, 09:48
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Сообщение от laimas Посмотреть сообщение
Да, заказчик бывает и как диагноз. )

Есть конверторы html-pdf, для серверной части я как-то использовал такую библиотеку, интересно есть ли подобные решения для клиента или же как сторонний сервис через клиентское API.
laimas,
а такая библиотека с jquery работать умеет или только с инлайновым javascript?
Ответить с цитированием
  #9 (permalink)  
Старый 26.09.2018, 10:21
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Aetae,
Посмотрите, чего в итоге добился. Канвас создается, страница скачивается.
Сделал демо-пример

При первом клике на кнопку скачать (вверху) рендерится картинка, при втором - скачивается инфа со страницы, но, как видим в скачаном файле, сохраняется только текстовая информация, без сохранение канвас картинки, причем киррилические буквы прописываются кракозябрами.
Как это можно поправить? Ну и конечно же в идеале сделать так, чтобы с первого клика скачивалась страничка.
Ответить с цитированием
  #10 (permalink)  
Старый 26.09.2018, 13:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от giwuf
а такая библиотека с jquery работать умеет или только с инлайновым javascript
Библиотека о которой я говорил, для РНР, то есть серверная. Есть ли нечто для клиента или же как сторонний сервис для клиента, я не знаю, этот вопрос меня не интересовал и на данный момент тоже не стоит передо мной. Поищите в сети, если есть и край как хочется делать клиентом, то используйте, по крайней мере это будет действительно легковесный pdf документ, а не порнография с картинкой.

Последний раз редактировалось laimas, 26.09.2018 в 14:00.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Html в pdf pdfmake.js - jQuery sergoss jQuery 1 15.02.2018 16:05
Jquery Добавление html страницы с таймером alex60070 jQuery 2 22.02.2015 16:12
Вытащить html из страницы не открывая её в браузере NoobJs AJAX и COMET 4 22.02.2015 06:40
Пример кода сохранения в базу html страницы генерированного посредством JavaScripts wayzer Серверные языки и технологии 2 06.09.2012 16:46
Получить html код удаленной страницы AntonP Общие вопросы Javascript 19 02.05.2012 16:15