html2canvas官网:http://html2canvas.hertzen.com/
<?php
if(!empty($_POST['datauri'])){
if(preg_match('/data:.*?;base64,/i',$_POST['datauri'])){
$datauri = base64_decode(preg_replace('/data:.*?;base64,/i','',$_POST['datauri']));
$dir = 'upload/';
if(!is_dir($dir)){
mkdir($dir);
}
$file = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']).'.pdf';
try {
file_put_contents($dir.$file,$datauri);
$data = ['code' => 1,'msg' => '上传成功','url' => $dir.$file];
} catch (Exception $e) {
$data = ['code' => 0,'msg' => '上传失败'];
}
echo json_encode($data);exit();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="content">内容</div>
<script src="http://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="http://cdn.bootcdn.net/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.debug.js"></script>
<script>
$(".download").on('click', function() {
downLoadPdf(document.getElementById("content"));
//downloadQrCode(document.getElementById("content"));
})
//保存为jpg图片
function downloadQrCode(content) {
html2canvas(content).then(function(canvas) {
var img = document.createElement('a');
img.href = canvas.toDataURL("image/jpeg",1);
img.download = 'report.jpg';
img.click();
});
}
//保存为PDF文件
function downLoadPdf(content) {
content = content ? content : null;
// 条件判断是否打印
if (!content) {
alert("打印失败,请重新操作")
return false
}
html2canvas(content, {
allowTaint: true,
useCORS: true
}).then(function(canvas) {
var pdfWidth = canvas.width;
var pdfHeight = canvas.height;
var pageHeight = pdfWidth / 592.28 * 841.89;
var leftHeight = pdfHeight;
var position = 0;
var imgWidth = 595.28;
var imgHeight = 595.28 / pdfWidth * pdfHeight;
var pageData = canvas.toDataURL("image/jpeg",1);
var pdf = new jsPDF('', 'pt', 'a4');
// 判断打印dom高度是否需要分页,如果需要进行分页处理
if (leftHeight < pageHeight) {
pdf.addImage(pageData, "jpeg", 0, 0, imgWidth, imgHeight)
} else {
while (leftHeight > 0) {
pdf.addImage(pageData, "jpeg", 0, position, imgWidth, imgHeight)
leftHeight -= pageHeight
position -= 841.89
if (leftHeight > 0) {
pdf.addPage()
}
}
}
//pdf.save("report.pdf");//下载PDF
var datauri = pdf.output('dataurlstring'); //base64编码
//上传
$.post('', {
datauri
}, function(res) {
if (res.code == 1) {
window.open(res.url);
} else {
alert('获取PDF文件失败');
}
}, 'json')
})
}
// js计算base64图片大小
function imageSize(base64Str) {
const indexBase64 = base64Str.indexOf('base64,');
if (indexBase64 < 0) return -1;
const str = base64Str.substr(indexBase64 + 6);
return (str.length * 0.75 / 1000).toFixed(2);
}
</script>
</body>
</html>
评论(0)