25.04.2018, 16:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от the_little
|
Я в документации ничего не нашел про это...
|
На первой же странице:
const pdfDocGenerator = pdfMake.createPdf(docDefinition);
pdfDocGenerator.getBase64((data) => {
//тут помещайте data в скрытое поле формы, и отправляйте на сервер
//выполнив этот метод, если выбрана отправка
});
Как вы читаете доки то? А можно и BLOB отправить как файл, и такой метод есть.
|
|
25.04.2018, 18:41
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Сообщение от laimas
|
На первой же странице:
const pdfDocGenerator = pdfMake.createPdf(docDefinition);
pdfDocGenerator.getBase64((data) => {
//тут помещайте data в скрытое поле формы, и отправляйте на сервер
//выполнив этот метод, если выбрана отправка
});
Как вы читаете доки то? А можно и BLOB отправить как файл, и такой метод есть.
|
Спасибо! А этот метод, он в каком виде передает это?
Я имею ввиду помещаю я дату в поле.
Например так:
<input type="hidden" id="pdfdoc" name="pdfdoc" />
const pdfDocGenerator = pdfMake.createPdf(docDefinition);
pdfDocGenerator.getBase64((data) => {
$('#pdfdoc').val(data);
});
И потом это поле передаю на сервер. Потом на сервере нужно будет что-то делать, чтобы из этого собрать файл? Или это будет просто текстовая информация?
|
|
25.04.2018, 18:55
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от the_little
|
А этот метод, он в каком виде передает это?
|
В base64. На сервере декодировать и получится файл (исходные бинарные данные его).
|
|
25.04.2018, 19:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Чего вы собираетесь делать с файлом этим на сервере, да и вообще нафига он нужен, но почтой файл передается как раз в base64 (Content-Transfer-Encoding:base64), то есть переданный таким образом файл и декодировать не нужно будет, если он только для отправления почты. Его нужно будет только разбить на строки, в РНР это функция chunk_split.
|
|
25.04.2018, 20:11
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Думаю сейчас разберусь. Другой вопрос вылез.
Сейчас написано так.
function changeFunc() {
//Тут идет функция, в которой происходят все расчеты.
// Поскольку при формировании pdf используются данные расчетов, то формирование переменной для дальнейшего формирования pdf происходит в этой же функции.
var docInfo = { // Тут контент и настройки файла };
};
$('#printfile').click(function() {
pdfMake.createPdf(docInfo).print('name.pdf');
});
Дальше есть кнопка "Распечатать". По идее при клике на кнопку нужно сделать
pdfMake.createPdf(docInfo).print('name.pdf');
Но переменная docInfo получается не определена...
МОжно конечно сделать еще одну функцию 2 в одном (расчеты + печать файла) и повесить ее на клик по кнопке "Распечатать".
Но по сути должна быть еще одна функция, которая должна висеть на событии submit, формировать файл pdf и передавать в инпут содержимое файла.
Это получается третий дубль одной и тоже функции с расчетами.
Что-то не правильно...
Как можно задать
pdfMake.createPdf(docInfo).print('name.pdf');
Вне функции, в которой формируется var docInfo?
Последний раз редактировалось the_little, 25.04.2018 в 20:13.
|
|
25.04.2018, 20:34
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Не знаю, у меня эта приблуда только в закладках браузера, реально же не использовал ни разу, ибо то, что действительно нужно когда-то готовить как PDF (презентации и прочие доки), все это готовится на сервере. Мне надо потратить немного времени, чтобы "пощупать" эту приблуду.
Ваш калькулятор, судя по данным, прост как валенок , неужели нельзя было результат расчета организовать как таблицу, которую распечатать то ведь не так и сложно, более того, можно даже в отдельном окне, запросив сервер, который вернет все в каком-то "шикарном шаблоне" для печати, или использовать meda print? Неужели рационально отсылать почтой какой-то файл, вместо того, чтобы отправить обычное почтовое html сообщение?
Я ничего не имею против, охота пуще неволи, но когда вместо пользы геморрой, я этого не понимаю.
|
|
25.04.2018, 22:20
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Сообщение от laimas
|
Не знаю, у меня эта приблуда только в закладках браузера, реально же не использовал ни разу, ибо то, что действительно нужно когда-то готовить как PDF (презентации и прочие доки), все это готовится на сервере. Мне надо потратить немного времени, чтобы "пощупать" эту приблуду.
Ваш калькулятор, судя по данным, прост как валенок , неужели нельзя было результат расчета организовать как таблицу, которую распечатать то ведь не так и сложно, более того, можно даже в отдельном окне, запросив сервер, который вернет все в каком-то "шикарном шаблоне" для печати, или использовать meda print? Неужели рационально отсылать почтой какой-то файл, вместо того, чтобы отправить обычное почтовое html сообщение?
Я ничего не имею против, охота пуще неволи, но когда вместо пользы геморрой, я этого не понимаю.
|
к сожалению, задача есть задача. Даже если она неадекватная, приходится решать. Я тоже не вижу никакого смысла передавать файл. Администратору в любом случае достаточно текстовой инфы, а клиенту нафиг этот файл не нужен, поскольку есть кнопка печать, или можно просто этот файл скачать...
Мне просто интересно, можно ли получить данные переменной, которая задана внутри функции, извне этой самой функции. Вот в чем вопрос) Простым способом она получается НЕОПРЕДЕЛЕНА
|
|
25.04.2018, 22:37
|
Профессор
|
|
Регистрация: 25.09.2017
Сообщений: 186
|
|
Разобрался...
Оказывается это делается очень просто)) Я про передачу переменной из одной функции в другую...
function changeFunc(){
var docInfo = хххххххх;
return docInfo;
}
$('#printfile').click(function() {
var docInfo = changeFunc();
pdfMake.createPdf(docInfo).print('name.pdf');
});
Теперь расчеты в одном экземпляре, все остальное отдельными функциями.
|
|
|
|