Я использую 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.
Я уже потратил несколько дней на то, чтобы найти решение этой проблемы, но не смог его найти, или, возможно, я что-то здесь не так сделал.
Задача ещё не решена.
Других решений пока нет …