产品要求公司的小程序和网站需要将商品详情导出成pdf,所以今天有琢磨一下如何将前端页面导出成pdf
提醒:以下代码图片地址,请自行修改一下。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>title</title> <style> .btn { width: 300px; height: 100px; } img { width: 100%; object-fit: cover; } </style> <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"></script> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> </head> <body> <button type="button" > <h2> 微信小程序 </h2> <blockquote> <p>说明:公司小程序项目是用的uniapp开发的</p> </blockquote> <h3> 方法1:通过wx.miniProgram.postMessage将pdf数据传给小程序 </h3> <blockquote> <p>提醒:以下代码图片地址,请自行修改一下。</p> </blockquote>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>title</title> <style> .btn { width: 300px; height: 100px; } img { width: 100%; object-fit: cover; } </style> <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"></script> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> </head> <body> <button type="button" > <ul> <li>uniapp 页面代码</li> </ul> <blockquote> <p>特别提醒:请将页面部署至自己的服务器下,然后修改一下地址,然后在小程序后台把部署的域名配置到web合法域名列表下,不然webview无法加载页面<br> </p> </blockquote> <pre class="brush:php;toolbar:false"> <template> <PageLayout> <web-view src="https://xxx.com/pdf_test.html" @message="handleGetMessage"></web-view> </PageLayout> </template> <script> export default { data() { return { imageData: "", } }, methods: { handleGetMessage(e) { console.log("收到webview消息:", e) this.imageData = e.detail.data[0].imageData console.log("收到webview消息: imageData=", this.imageData); const base64 = this.imageData.split("base64,")[1] console.log("收到webview消息: path=", base64); this.download(base64) }, async download(base64) { base64 = base64.replace(/[\r\n]/g, ""); const fs = wx.getFileSystemManager(); const buffer = wx.base64ToArrayBuffer(base64); const filePath = wx.env.USER_DATA_PATH + "/" + Date.now() + ".pdf" fs.writeFile({ filePath, data: buffer, success(res) { uni.openDocument({ showMenu: true, fileType: "pdf", filePath, success: function (res) { console.log("打开文档成功") } }) }, fail(err) { console.log("错误", err) } }) }, }, onLoad(e) { } } </script> <style scoped></style>
补充说明:如果你碰到h5通过wx.miniProgram.postMessage发送消息,小程序死活的搜索不到消息,返回、分享都没用。解决办法:可以通过将数据保存至后端,然后再通过导航将参数传给小程序,然后再下载pdf。具体代码就罗列了,简单说下思路
以上是uniapp 入门实战 将前端页面导出成pdf的详细内容。更多信息请关注PHP中文网其他相关文章!