php把jspdf在线预览,php-html2canvas和jsPDF:将生成的pdf作为电子邮件附件发送

这篇博客介绍了如何使用html2canvas和jsPDF库将网页屏幕截图并保存为PDF文件,然后通过AJAX将生成的PDF数据发送到PHP脚本。在PHP端,使用MailWithAttachment函数通过电子邮件发送带有附件的邮件。邮件中包含的PDF附件是通过base64解码从前端接收到的数据生成的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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');

}

});

}

通过使用上面的代码,我可以下载文件并将其保存在本地.

但是我想使用php脚本通过电子邮件直接发送生成的pdf.

以下是在php脚本中发布图像的代码,该图像将作为电子邮件发送:

var imgData = canvas.toDataURL("image/jpeg");

$.post("sendimage.php",

{

data: imgData

}, function (response,status) {

console.log(response);

});

但是如何在数据参数中发布生成的pdf?

请为此提出任何解决方案.

解决方法:

请检查PHP代码-

function MailWithAttachment($to, $subject, $message, $senderMail, $senderName, $files){

$from = $senderName." ";

$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

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

PHP Email with attachment

';

//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?"

Mail Sent

":"

Mail not SEND

";

} else {

echo "No Data Found";

}

我希望它对您有用:)

标签:jspdf,html2canvas,ajax,php

来源: https://codeday.me/bug/20191119/2035637.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值