当前位置:   article > 正文

vue将页面导出pdf。_vue将长网页转为pdf并显示

vue将长网页转为pdf并显示
  1. //第一个:将页面html转换成图片
  2. npm install --save html2canvas
  3. //第二个:将图片生成pdf
  4. npm install jspdf --save
  1. // 导出页面为PDF格式
  2. function getPdf() {
  3. var title = 'xxxx'
  4. // html2Canvas(document.querySelector('#pdfDom'), { //这是在界面上设置一个id
  5. //只下载id为pdfDom的内容
  6. html2Canvas(document.body, { //body是下载整个界面
  7. useCORS: true, //是否尝试使用CORS从服务器加载图像
  8. allowTaint: true,
  9. dpi: 300, //解决生产图片模糊
  10. // width: 490, //canvas宽度
  11. // height: 240, //canvas高度
  12. // x: 0, //x坐标
  13. // y: 0, //y坐标
  14. async: false, //是否异步解析和呈现元素
  15. foreignObjectRendering: true, //是否在浏览器支持的情况下使用ForeignObject渲染
  16. }).then(function (canvas) {
  17. let contentWidth = canvas.width
  18. let contentHeight = canvas.height
  19. let pageHeight = contentWidth / 592.28 * 841.89 // 一页pdf显示html页面生成的canvas高度;
  20. let leftHeight = contentHeight //未生成pdf的html页面高度
  21. let position = 0 //pdf页面偏移
  22. //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
  23. let imgWidth = 595.28
  24. let imgHeight = 592.28 / contentWidth * contentHeight
  25. let pageData = canvas.toDataURL('image/jpeg', 1.0)
  26. let PDF = new JsPDF('', 'pt', 'a4')
  27. // 有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
  28. //当内容未超过pdf一页显示的范围,无需分页
  29. if (leftHeight < pageHeight) {
  30. PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
  31. } else {
  32. while (leftHeight > 0) {
  33. PDF.addImage(pageData, 'JPEG', 20, position, imgWidth, imgHeight)
  34. leftHeight -= pageHeight
  35. position -= 841.89
  36. if (leftHeight > 0) {
  37. PDF.addPage()
  38. }
  39. }
  40. }
  41. PDF.save(title + '.pdf')
  42. })
  43. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/880314
推荐阅读
相关标签
  

闽ICP备14008679号