gpt4 book ai didi

php - html2canvas 和 jsPDF : send generated pdf as email attachment

转载 作者:搜寻专家 更新时间:2023-10-31 20:36:24 32 4
gpt4 key购买 nike

我创建了一个功能来截取当前网页的屏幕截图并使用 html2canvas 和 jsPDF 将其保存为 PDF。以下是我的代码:

<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>

通过使用上面的代码,我可以下载文件并将其保存在本地。但我想使用 php 脚本通过电子邮件直接发送生成的 pdf。

以下是在 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";
}

我希望它对你有用:)

关于php - html2canvas 和 jsPDF : send generated pdf as email attachment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994282/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com