<div id="pdfDom" style="width: 1000px;margin: 0 auto;" ref="htmlDom">
//内容
</div>
textHtml2Canvas () {
const refDom = this.$refs.htmlDom.getBoundingClientRect()
const pageWidth = 595.28 - 40 // A4纸的宽高 减去左右边距
const pageHeight = 841.89
// a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
html2canvas(document.querySelector('#pdfDom'), {
allowTaint: true,
taintTest: false,
useCORS: true,
async: true,
scale: '1', // 放大倍数
dpi: '192', // 精度
scrollY: refDom.top, // 关键代码
height: refDom.height + 50 // 加高度,避免截取不全
}).then(canvas => {
const contentWidth = canvas.width
const contentHeight = canvas.height
const pageData = canvas.toDataURL('image/jpeg/png', 1)
const PDF = new JsPDF('', 'pt', 'a4') // , true
// canvas图片的高
const imgHeight = pageWidth / contentWidth * contentHeight // canvas的宽与PDF的宽比列一样的时候,canvas的高缩放后的值
let leftHeight = imgHeight
let position = 30
// 如果图片的高小于A4纸的高,不分页
if (leftHeight < pageHeight) {
PDF.addImage(pageData, 'JPEG', 20, 0, pageWidth, imgHeight)
} else {
// 分页
// let index = 0
while (leftHeight > 0) {
// console.log(leftHeight, '每一页的高度', imgHeight, index)
// index++
// addImage(stream, startX, startY, width, height)
// stream:图片流
// (startX,startY)图片的放置的开始点
PDF.addImage(pageData, 'JPEG', 20, position, pageWidth, imgHeight)
leftHeight = leftHeight - pageHeight
position -= pageHeight
if (leftHeight > 0) {
PDF.addPage()
}
}
}
PDF.save('个人简历表') // 保存PDF
return PDF.output('datauristring')
})
}
PDF下载以A4纸的宽高就行分页下载
最新推荐文章于 2023-07-24 14:08:00 发布