Как сохранить PDF на сервер? css2pdf@cloudformatter xeponline
Мне было интересно, если кто-нибудь знает способ сохранить полученный PDF-документ на сервер, вместо того, чтобы предложить пользователю загрузить его локально?
Используя это: http://www.cloudformatter.com/CSS2Pdf
Большое спасибо
Изменить: я использую следующий JS, чтобы начать PDF.
$(function(){
$('#generatePDF').click(function(e) {
e.preventDefault();
var pdfdata = xepOnline.Formatter.Format('printableInvoice',
{
pageWidth:'216mm',
pageHeight:'279mm',
render: 'base64'
}
);
console.log(pdfdata);
});
});
1 ответ
Оставьте ответ на месте, так как комментарии ниже актуальны. Первоначальный ответ был о том, как получить информацию об источнике (используя опцию "base64"), а не об окончательном PDF.
Итак, чтобы получить окончательный PDF, который находится в памяти, если вы изучите код в Github:
https://github.com/Xportability/css-to-pdf/blob/master/js/xepOnline.jqPlugin.js
начиная с "else" в строке 602 ... это "else" выполняется, если вы форсируете что-либо, кроме загрузки. Если вы выбрали "newwin" или "embed" в качестве метода, и браузер, сниффингующий JS, не заставлял его снова загружаться (это происходит в Safari, IE, а также в мобильных браузерах), тогда это "else" выполняется.
На успешном посте AJAX выполняется функция "xepOnline.Formatter.__postBackSuccess". Эта функция начинается со строки 863. В строке 865 загружаются закодированные в base64 байты фактического PDF. Если вы отлаживаете свой сайт и отлаживаете в этой строке кода, вы можете получить значение переменной "base64", которая будет байтами в кодировке base64.
Таким образом, если бы у вас были только Firefox и Chrome, то вы могли бы внести некоторые изменения в код, чтобы отправить результат обратно на сервер и не отображать его. Если у вас есть все эти браузеры для рассмотрения, вам нужно будет добавить некоторую опцию (например, скажем, опцию: "память", которая пропускает весь анализ браузера, запускает версию AJAX, но с собственной функцией успеха).
Я могу посмотреть, как добавить это в библиотеку, но вы можете сами сделать это и сделать некоторые моды.