「html2canvaまたはjsPDFからPHPMailer経由でPDFを添付する方法」に関する多くの回答を読んだが、試したすべてがうまくいかなかった。jsPDF、html2canvas、PHPMailer、もう一度...!メールにPDFを添付する
今のところ、いくつかの入力があるHTMLページがあります。顧客がすべてを記入すると、彼は[送信]ボタンをクリックします。
- html2canva jsPDFはとしてページにカット
- スクリーンショットを撮ることが
- を必要とするようにjQueryはphpmailerのは、それを取り、メールで送信
- PHPスクリプトにPDFを送信します。
PDFファイルの添付ファイルを除き、すべて機能します。
だから、私はあなたの助けが必要です。)
これは私が持っているものです。
JSスクリプト:
html2canvas($("#Div"), {
onrendered: function(canvas) {
//=== Take screenshot
var imgData = canvas.toDataURL('image/jpeg');
//=== PDFize it
var doc = new jsPDF("p", "px");
var options = {
pagesplit: true
};
//=== Split it
var imgWidth = 210;
var pageHeight = 295;
var imgHeight = canvas.height * imgWidth/canvas.width;
var heightLeft = imgHeight;
var doc = new jsPDF('p', 'mm');
var position = 0;
doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
while (heightLeft >= 0) {
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
}
//=== Send it
$.post("mail.php",
{
data: doc;
}, function() {}).done(function() {/*SOME CODE*/});
//=== Just to test the PDF
doc.save('file.pdf');
}
});
そして、私のPHPスクリプト:
<?php
if(!empty($_POST['data']))
{
require 'lib/PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = '*';
$mail->SMTPAuth = *;
$mail->Username = '*';
$mail->Password = '*';
$mail->SMTPSecure = '*';
$mail->Port = *;
$mail->setFrom('*', '*');
$mail->addAddress('*', '*');
//=== Tested this
$originalbase = $base;
//=== or this
$base = explode('data:application/pdf;base64,', $_POST['data']);
$mail->addStringAttachment($originalbase, "name.pdf", "base64", "application/pdf");
$mail->isHTML(true);
$mail->Subject = '*';
$mail->Body = '*';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
} else echo "No Data Found";
?>
私が持っていましたベースなしのデコードでテストされていますが、MIMEタイプはありません。
編集1:13.10:2016年10月13日 は
var PDF = doc.output('datauri');
$base = explode('data:application/pdf;base64,', $_POST['data']);
$base = base64_decode($base[1]);
$mail->addStringAttachment($base, 'pdfName.pdf');
編集2で良いように思われます。2016 その後、PHPに、全体のHTMLコードを送信するユーザーがフォームを送信作成したPDF
くそー!私のために良いと思われる。 – OverSu
私はJSから受け取ったPHPのvarを少し爆発させなければなりませんでした。 $ base = explode( 'data:application/pdf; base64、'、$ _POST ['data']); $ base = base64_decode($ base [1]); $ mail-> addStringAttachment($ base、 'pdfName.pdf'); – OverSu
だからそれは働く??? – Diptox