$("#printer").on("click",function(e){
var element = document.getElementById('qrcode');
var opt = {
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 3 },
jsPDF: { unit: 'cm', format: 'letter', orientation: 'landscape' }
};
html2pdf().from(element).set(opt).toPdf().output('datauristring').then(function (pdfAsString) {
// The PDF has been converted to a Data URI string and passed to this function.
// Use pdfAsString however you like (send as email, etc)!
var arr = pdfAsString.split(',');
pdfAsString= arr[1];
var data = new FormData();
data.append("data" , pdfAsString);
var xhr = new XMLHttpRequest();
xhr.open( 'post', 'upload.php', true ); //Post the Data URI to php Script to save to server
xhr.send(data);
})
e.preventDefault(); //stop the browser from following
window.location.href = 'uploads/file.pdf';
});
<?php
$data = $_POST['data'];
$b64 = $data;
# Decode the Base64 string, making sure that it contains only valid characters
$bin = base64_decode($b64, true);
# Perform a basic validation to make sure that the result is a valid PDF file
# Be aware! The magic number (file signature) is not 100% reliable solution to validate PDF files
# Moreover, if you get Base64 from an untrusted source, you must sanitize the PDF contents
if (strpos($bin, '%PDF') !== 0) {
throw new Exception('Missing the PDF file signature');
}
# Write the PDF contents to a local file
file_put_contents('uploads/file.pdf', $bin);
?>