Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отправка сформированного на JS PDF-файла на почту клиенту. (https://javascript.ru/forum/misc/73559-otpravka-sformirovannogo-na-js-pdf-fajjla-na-pochtu-klientu.html)

the_little 25.04.2018 11:47

Отправка сформированного на JS PDF-файла на почту клиенту.
 
Всем привет.

Есть страница, на которой размещен калькулятор.
Я формирую при помощи pdfmake
https://github.com/bpampuch/pdfmake
pdf файл, который можно скачать или распечатать.

При этом в форме есть галочка, отправить расчеты мне на почту.
Соответсвенно если она отмечена, то этот файл должен уходить на почту клиенту.

В мануале есть открыть, печатать, скачать...
pdfMake.createPdf(docInfo).download('name.pdf');
pdfMake.createPdf(docInfo).open('name.pdf');
pdfMake.createPdf(docInfo).print('name.pdf');


Как этот файл во вложение засунуть?

laimas 25.04.2018 12:20

Цитата:

Сообщение от the_little
Как этот файл во вложение засунуть?

При этом в форме есть галочка, отправить расчеты мне на почту ?

the_little 25.04.2018 15:19

Цитата:

Сообщение от laimas (Сообщение 484017)
При этом в форме есть галочка, отправить расчеты мне на почту ?

Да, в форме есть галочка, отправить мне на почту.

Но файл в любом случае куда-то отправляется.
Если есть галочка, то и клиенту и администратору.
Если галочки нет, то только администратору.

Я не понимаю как этот файл "выцепить".

Форму в которую подгружается файл, и который нужно отправить по почте я понимаю. Делал.
А как этот сформированный где-то файл запихнуть в письмо я не понимаю...

laimas 25.04.2018 15:29

Цитата:

Сообщение от the_little
Я не понимаю как этот файл "выцепить".

Читать о методах используемого, если есть метод возвращающий данные этого файла, то не проблема его отправить на сервер.

Как примечание: чем большие возможностей предоставляется, тем больше приключений на свою задницу ищет разработчик :) Почему именно PDF, это калькулятор с плюшками в виде картинок, дизайн которого определяется исключительно пользователем? А проще, обычной html-таблицей результат расчета представить невозможно?

PDF, это же не брелок, который можно прицепить к связке ключей и носить с собой.

the_little 25.04.2018 16:19

Цитата:

Сообщение от laimas (Сообщение 484027)
Читать о методах используемого, если есть метод возвращающий данные этого файла, то не проблема его отправить на сервер.

Как примечание: чем большие возможностей предоставляется, тем больше приключений на свою задницу ищет разработчик :) Почему именно PDF, это калькулятор с плюшками в виде картинок, дизайн которого определяется исключительно пользователем? А проще, обычной html-таблицей результат расчета представить невозможно?

PDF, это же не брелок, который можно прицепить к связке ключей и носить с собой.

Такое задание... При этом в PDF выводится просто текстовая часть...

the_little 25.04.2018 16:20

Цитата:

Сообщение от laimas (Сообщение 484027)
Читать о методах используемого

Имеется ввиду читать в документации pdfmaker?

Нет там такого... Посмотрел, там много всего по выводу контента и настройкам самого файла. С этим всем я разобрался.
А про то что этот файл можно отправить - ни слова. И в интернете я не нашел как его отправить...

laimas 25.04.2018 16:42

Цитата:

Сообщение от the_little
Имеется ввиду читать в документации pdfmaker?

Нет там такого... Посмотрел, там много всего по выводу контента и настройкам самого файла.

Тогда нужно давать ссылку на то, что используете. Если говорить о pdfmaker, то единственное, что мне известно, это библиотека Эдоба - https://helpx.adobe.com/ru/acrobat/u...r-windows.html. Если же говорить о pdfmake, то есть такая js - https://github.com/bpampuch/pdfmake, в которой есть метод получения файла как, к примеру, данные base64, и которые можно отправить скрытым полем, в простейшем случае.

А вы о чем?

the_little 25.04.2018 16:47

Цитата:

Сообщение от laimas (Сообщение 484034)
Тогда нужно давать ссылку на то, что используете. Если говорить о pdfmaker, то единственное, что мне известно, это библиотека Эдоба - https://helpx.adobe.com/ru/acrobat/u...r-windows.html. Если же говорить о pdfmake, то есть такая js - https://github.com/bpampuch/pdfmake, в которой есть метод получения файла как, к примеру, данные base64, и которые можно отправить скрытым полем, в простейшем случае.

А вы о чем?

Вот она
такая js - https://github.com/bpampuch/pdfmake

laimas 25.04.2018 16:49

Ну и какие проблемы? Знаний хватит на простейшее - отправить текстом base64 (если файл не велик) и все необходимое сделать на сервере? Метод то в примере даже описан.

the_little 25.04.2018 16:55

Я в документации ничего не нашел про это...
ТАм кроме стилей и 3-х функций ничего и нет...

Я сделал по инструкции. Файл формируется. Выводится на печать.
// Вывод на печать файла
			var docInfo = {

				info: {
					title:'Тестовый документ PDF',
					author:'Viktor',
					subject:'Theme',
					keywords:'Ключевые слова'
				},

				pageSize:'A4',
				pageOrientation:'portrait',//'portrait'
				pageMargins:[50,50,50,50],

				header:[
					{
						text: 'Общая сумма ремонта = ' + full_summ,
						alignment:'center',//left  right
					}
				],

				footer:function(currentPage,pageCount) {
					return {
						text: currentPage.toString() + 'из' + pageCount,
						alignment:'right',
						margin:[0,30,10,50]
					}
				},

				content: [

					{
						text:'Расчет стоимости ремонта квартиры',
						margin:[0,30,0,30],
						style:'header'
						//pageBreak:'after'
					},

					{
						text:'Параметры квартиры',
						margin:[0,0,0,15],
						style:'headertwo'
						//pageBreak:'before'
					},

					{
						text: 'Количество комнат - ' + print_rooms,
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

					{
						text: 'Площадь квартиры = ' + square + 'кв.м.',
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

					{
						text: 'Количество санузлов = ' + sanuzel,
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

					{
						text:'Капитальные работы',
						margin:[0,0,0,15],
						style:'headertwo'
						//pageBreak:'before'
					},

					{
						text: 'Мокрая стяжка пола - ' + print_styajka,
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

					{
						text: 'Возведение межкомнатных стен - ' + print_walls,
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

					{
						text: 'Демонтаж - ' + print_demontaj,
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

					{
						text: 'Разводка электрики - ' + print_electrik,
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

					{
						text: 'В моем доме деревянные перекрытия - ' + print_woods,
						margin:[20,0,0,10],
						style:'maintext'
						//pageBreak:'before'
					},

				],

				styles: {
					header: {
						fontSize:20,
						bold:true,
						alignment:'center'
					},
					headertwo: {
						fontSize:16,
						bold:true,
						alignment:'left'
					},
					maintext: {
						fontSize:14,
						bold:false,
						alignment:'left'
					}
				}
			}

			pdfMake.createPdf(docInfo).print('name.pdf');


Часовой пояс GMT +3, время: 10:50.