想实现一个导出pdf到手机上的需求,导入html2canvas和jspdf可以实现h5页面的导出,因为app端没有dom嘛,研究下可以使用webview或者renderjs,但是无论是使用webview还是renderjs文件都会乱码,并且下载失败,希望大佬们提供下思路,感激不尽
代码:
<template>
<div id="pdfDom">
<div>测试用的dom</div>
<button type="button" class="btn btn-primary" @click="test.onClick">导出PDF</button>
</div>
</template>
<script module="test" lang="renderjs">
import html2Canvas from "html2canvas"
import JsPDF from "jspdf"
export default {
methods: {
onClick(event, ownerInstance) {
html2Canvas(document.querySelector("#pdfDom"), {
// allowTaint: true 表示允许跨越的图片
allowTaint: true
}).then(function(canvas) {
let imgWidth = canvas.width
let imgHeight = canvas.height
// 生成canvas截图,1表示生成的截图质量(0-1)
let pageData = canvas.toDataURL("image/jpeg", 1.0)
// new JsPDF接收三个参数,landscape表示横向(默认不填是纵向),打印单位和纸张尺寸
let PDF = new JsPDF("landscape", "pt", "a4")
// 调用addImage方法,第一个参数表示生成的截图内容,第二个参数表示图片格式,第三个参数表示距纸张左侧的距离,第四个参数表示距纸张上方的距离,第五个参数表示生成截图的image的宽度,第六个参数表示生成截图的image的高度
PDF.addImage(pageData, "JPEG", 20, 20, imgWidth, imgHeight)
// 调用save方法生成pdf文件
PDF.save("test" + ".pdf")
})
}
}
}
</script>
<style>
#pdfDom {
height: 100vh;
background-color: pink;
}
</style>
渴望网
这个怎么解决
2022-05-06 09:24