ajax — Как отправить PDF (jsPdf) на сервер (Zend 1)

Я использую jsPDF для создания PDF на стороне клиента, и он работает нормально с помощью pdf.save('document.pdf');, Теперь я пытаюсь отправить электронное письмо вместе с PDF в качестве вложения, используя AJAX и Zend_Mail функция на заднем конце, но это не работает!

Ну я пробовал pdf.output();, pdf.output('blob'); а также пытался пройти pdf.output('datauristring'); но сталкиваются с разными проблемами.

Прежде всего, я преобразовал HTML в PNG с помощью domtoimage и код для этого ниже:

domtoimage.toPng(node)
.then(function (dataUrl) {
/* This function is used to generate or send output of the pdf to the back end */
createCalendarPdf(dataUrl);
})
.catch(function (error) {
alert('Oops, something went wrong! ' + error);
}
);

Для загрузки PDF на стороне клиента, я просто использовал и это
работает

pdf.save('document.pdf');

Для отправки blob или же base64 string У меня трудности.

Код ниже, чтобы изменить вывод PDF в blob URL объекта

URL объекта BLOB

Создание URL объекта BLOB для PDF

var binaryImg = pdf.output();
var length = binaryImg.length;
var arrayBuffer = new ArrayBuffer(length);
var uintArray = new Uint8Array(arrayBuffer);

for (var i = 0; i < length; i++) {
uintArray[i] = binaryImg.charCodeAt(i);
}

var currentBlob = new Blob([uintArray], {type: 'application/pdf'});

var createdBlobUrl = URL.createObjectURL(currentBlob);

# Output looks like this
blob:http://example.com/ff471a1c-702j-453d-01g0-d6a26l901bvz

AJAX Запрос

С помощью FormData

var fd = new FormData();
fd.append('file', createdBlobUrl);

$.ajax({
type: 'POST',
url: functionUrl,
data: fd,
processData: false,
contentType: false,
async: false
}).done(function(data) {
console.log(data);
});

Итак, я не уверен, как получить контент от blob URL объекта в Zend или простом PHP. Так я попробовал file_get_contents($this->_params['file']) но это не сработало!

Пытался пройти pdf.output(); или же pdf.output('datauristring'); но не смог получить результат на стороне сервера из-за длины строки. Как я уже говорил ранее, я сначала изменил шаблон HTML на PNG, а затем создал из него PDF. Вот почему веб-инспектор застрял между процессами и затем должен полностью убить страницу.

Уже увеличила max_post_size и другие вещи уже в php.ini

Функция Zend_Mail

$mail = new Zend_Mail();

$attachment = $mail->createAttachment($pdfFile);
$attachment->type = 'application/pdf';
$attachment->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
$attachment->encoding = Zend_Mime::ENCODING_BASE64;
$attachment->filename = 'document.pdf';

$mail->setBodyHtml($html);
$mail->setFrom($emailFrom, 'Adeel');
$mail->addTo($emailTo, 'ABC');
$mail->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);
$mail->setSubject($subject);

// send email
$mail->send();

Короче говоря, я просто хотел узнать, как я могу получить контент от blob URL объекта, если есть какой-либо возможный путь или как пройти base64 Строка до конца и проанализировать его в PHP.

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

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …