欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 前端通过 jspdf 和 html2canvas 工具将网页生成 pdf

前端通过 jspdf 和 html2canvas 工具将网页生成 pdf

2025/11/8 4:31:40 来源:https://blog.csdn.net/weixin_38728902/article/details/144459939  浏览:    关键词:前端通过 jspdf 和 html2canvas 工具将网页生成 pdf

由于 html2canvas 的性能问题,该方案对于页数比较多的场景生成的非常慢,可以试着使用 modern-screenshot 工具看是否性能会得到提升。

import html2canvas from 'html2canvas'
import { jsPDF } from 'jspdf'async function exportPdf(){const pages = document.querySelectorAll('.report-page')if (!pages.length) returnconst doc = new jsPDF({orientation: pageConfig.pageDirection as // 页面方向| 'p'| 'portrait'| 'l'| 'landscape'| undefined,format: pageConfig.pageSize, // 页面大小,例如 'A4'unit: 'mm',})for (const [i, page] of pages.entries()) {curPage.value = i + 1 // 当前页码if (i !== 0) {doc.addPage(pageConfig.pageSize,pageConfig.pageDirection as| 'p'| 'portrait'| 'l'| 'landscape'| undefined,)}page.style.border = 'none'const canvas = await html2canvas(page, {scale: 5,})const isNormalPage = pageConfig.value.pageDirection === 'p'doc.addImage({imageData: canvas.toDataURL('image/jpeg'),format: 'JPEG',x: 0,y: 0,width: isNormalPage? pageConfig.pageWidth: pageConfig.pageHeight,height: isNormalPage? pageConfig.pageHeight: pageConfig.pageWidth,})}const rawdata = doc.output('datauristring')window.pdfData = rawdatadoc.save(`${pageConfig.name || '预览'}.pdf`)
}

执行完  doc.save 后会自动触发浏览器下载。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词