html div 导出pdf 出处忘了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link type="text/css" rel="stylesheet" href="./bootstrap-4.3.1/css/bootstrap.min.css">
<script src="./jquery.min.js"></script>
<script src="./bootstrap-4.3.1/js/bootstrap.min.js"></script>
<style>
</style>
<script src="./html2canvas.js"></script>
<script src="./jspdf/jspdf.umd.min.js"></script>
</head>
<body bac>
<h1>Hello World</h1>
<p>This is some sample text.</p>
<button id="export-pdf">Export to PDF</button>
<div id="abc" style="overflow-y: scroll;height: 800px; background-color: azure;">
<h1>adf</h1>
<h1>adf</h1>
<h1>adf</h1>
<h1>adf</h1>
<div>
<ul class="nav fixedtop">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
<div class="container">
<div class="row">
<div>
123
</div>
</div>
</div>
<p>12</p>
<p>
lsdfjj sf sdfsdfsdfsdf
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd sdfkljklsafdddddddddddddddd
</p>
<p>
sdf </p>
<!-- <img src="./img/jiangxue.png" /> -->
</div>
<script>
document.getElementById('export-pdf').addEventListener('click', function () {
var ele = document.getElementById('abc');
getPdfFromHtml(ele, 'scrollable-content.pdf');
})
function getPdfFromHtml (ele, pdfFileName) {
ele.style.height = ele.scrollHeight + "px";
html2canvas(ele, {
dpi: window.devicePixelRatio * 4,
scale: 4,
useCORS: true,
allowTaint: false,
height: ele.offsetHeight,
width: ele.offsetWidth,
windowWidth: document.body.scrollWidth,
windowHeight: document.body.scrollHeight
}).then(canvas => {
const _this = this;
ele.style.height = ele.clientHeight + "px";
var leftHeight = canvas.height;
var a4Width = 595.28;
var a4Height = 841.89;
var a4HeightRef = Math.floor((canvas.width / a4Width) * a4Height);
var position = 0;
var pageData = canvas.toDataURL("image/jpeg", 1.0);
var pdf = new jspdf.jsPDF("p", "pt", "a4");
var index = 1,
canvas1 = document.createElement("canvas"),
height;
pdf.setDisplayMode("fullwidth", "continuous", "FullScreen");
function getPdfFromHtml (ele, pdfFileName) {
ele.style.height = ele.scrollHeight + "px";
html2canvas(ele, {
dpi: window.devicePixelRatio * 4,
scale: 4,
useCORS: true,
allowTaint: false,
height: ele.offsetHeight,
width: ele.offsetWidth,
windowWidth: document.body.scrollWidth,
windowHeight: document.body.scrollHeight
}).then(canvas => {
const _this = this;
ele.style.height = ele.clientHeight + "px";
var leftHeight = canvas.height;
var a4Width = 841.89;
var a4Height = 595.28;
var a4HeightRef = Math.floor((canvas.width / a4Width) * a4Height);
var position = 0;
var pageData = canvas.toDataURL("image/jpeg", 1.0);
var pdf = new jspdf.jsPDF("l", "pt", "a4");
var index = 1,
canvas1 = document.createElement("canvas"),
height;
pdf.setDisplayMode("fullwidth", "continuous", "FullScreen");
function createImpl (canvas) {
if (leftHeight > 0) {
index++;
var checkCount = 0;
if (leftHeight > a4HeightRef) {
var i = position + a4HeightRef;
for (i = position + a4HeightRef; i >= position; i--) {
var isWrite = true;
for (var j = 0; j < canvas.width; j++) {
var c = canvas.getContext("2d").getImageData(j, i, 1, 1).data;
if (c[0] != 0xff || c[1] != 0xff || c[2] != 0xff) {
isWrite = false;
break;
}
}
if (isWrite) {
checkCount++;
if (checkCount >= 10) {
break;
}
} else {
checkCount = 0;
}
}
height =
Math.round(i - position) || Math.min(leftHeight, a4HeightRef);
if (height <= 0) {
height = a4HeightRef;
}
} else {
height = leftHeight;
}
canvas1.width = canvas.width;
canvas1.height = height;
var ctx = canvas1.getContext("2d");
ctx.drawImage(
canvas,
0,
position,
canvas.width,
height,
0,
0,
canvas.width,
height
);
var pageHeight = Math.round((a4Width / canvas.width) * height);
if (position != 0) {
pdf.addPage();
}
pdf.addImage(
canvas1.toDataURL("image/jpeg", 1.0),
"JPEG",
5,
0,
a4Width,
(a4Width / canvas1.width) * height
);
leftHeight -= height;
position += height;
if (leftHeight > 0) {
setTimeout(createImpl, 500, canvas);
} else {
this.pdfSave = pdf.save(pdfFileName + ".pdf");
}
}
}
if (leftHeight < a4HeightRef) {
pdf.addImage(
pageData,
"JPEG",
5,
0,
a4Width,
(a4Width / canvas.width) * leftHeight
);
this.pdfSave = pdf.save(pdfFileName + ".pdf");
} else {
try {
pdf.deletePage(0);
setTimeout(createImpl, 500, canvas);
} catch (err) {
console.log(err);
}
}
});
}
</script>
</body>
</html>