html2canvas и jsPDF: отправить сгенерированный PDF-файл в виде вложения электронной почты

Я создал функцию, чтобы сделать снимок экрана текущей веб-страницы и сохранить ее в формате PDF с помощью html2canvas и jsPDF. Ниже приведен мой код:

<script> function downloadpdf(){ html2canvas(document.body, { onrendered: function(canvas){ var imgData = canvas.toDataURL("image/jpeg"); var a = document.createElement('a'); var doc = new jsPDF('p','mm'); doc.addImage(imgData, 'JPEG', 15, 40, 180, 160); doc.save($.now()+'.pdf'); } }); } </script> 

Используя приведенный выше код, я могу загрузить файл и сохранить его локально. Но я хочу напрямую отправить сгенерированный pdf-файл по электронной почте, используя php-скрипт.

Ниже приведен код для размещения изображения в php-скрипте, где он будет отправлен по электронной почте:

 var imgData = canvas.toDataURL("image/jpeg"); $.post("sendimage.php", { data: imgData }, function (response,status) { console.log(response); }); 

Но как отправить созданный PDF в параметр data ?

Пожалуйста, порекомендуйте любое решение для этого.

Проверьте код PHP

 function MailWithAttachment($to, $subject, $message, $senderMail, $senderName, $files){ $from = $senderName." <".$senderMail.">"; $headers = "From: $from"; // boundary $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; // headers for attachment $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; // multipart boundary $message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; // preparing attachments if(count($files) > 0){ for($i=0;$i<count($files);$i++){ if(is_file($files[$i])){ $message .= "--{$mime_boundary}\n"; $fp = @fopen($files[$i],"rb"); $data = @fread($fp,filesize($files[$i])); @fclose($fp); $data = chunk_split(base64_encode($data)); $message .= "Content-Type: application/octet-stream; name=\"".basename($files[$i])."\"\n" . "Content-Description: ".basename($files[$i])."\n" . "Content-Disposition: attachment;\n" . " filename=\"".basename($files[$i])."\"; size=".filesize($files[$i]).";\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; } } } $message .= "--{$mime_boundary}--"; $returnpath = "-f" . $senderMail; //send email $mail = @mail($to, $subject, $message, $headers, $returnpath); //function return true, if email sent, otherwise return fasle if($mail){ return TRUE; } else { return FALSE; } } if(!empty($_POST['data'])){ //email variables $to = 'to-email@email.com'; $from = 'from-email@email.com'; $from_name = 'PDF FIle'; //attachment files path array $file = base64_decode($_POST['data']); $subject = 'PHP Email with attachment'; $html_content = '<h1>PHP Email with attachment</h1>'; //call MailWithAttachment() function and pass the required arguments $send_email = MailWithAttachment($to,$subject,$html_content,$from,$from_name,$file); //print message after email sent echo $send_email?"<h1> Mail Sent</h1>":"<h1> Mail not SEND</h1>"; } else { echo "No Data Found"; } 

Надеюсь, это сработает для вас 🙂