最近有个需求需要前端直接将html页面导出为pdf,在此过程中遇到了各种各样的问题,由于本人是服务端,硬着头皮在做前端,第一次使用vue,第一次做html导出为pdf,做此记录希望给和我一样经历的人一点帮助。

html导出为pdf的方式:html2canvas+jsPDF,具体代码就不上了,百度网上一大堆,但是在网上百度的方法你在使用的过程中可能会遇到以下问题。

再说问题前我们先来简单了解一下html2canvas+jsPDF是如何将html转为pdf的。html2canvas:将指定的dom节点转 为图片(百度html转pdf时,你一定会看到let imgBase64 = canvas.toDataURL('image/jpeg', 1.0)这段代码,imgBase64 就是图片对应的base64编码),该方式是通过截图实现的。jsPDF:将图片添加到pdf中(pdf.addImage(imgBase64, 'JPEG', 0, 0, imgWidth, imgHeight))。

遇到的问题总结:

问题1:

        导出的pdf很模糊。

解决方法:设置画布(canvas)的dpi为300,scale为2,上个伪代码:

html2canvas(ele, {

useCORS: true,//允许canvas画布内可以跨域请求外部链接图片, 允许跨域请求。

dpi: 300, // 提升导出的文件的分辨率

scale: 2 // 提升导出的文件的分辨率

}).then(async canvas => {})

问题2:

需要导出的dom节点的高度和宽度是大于当前浏览器的可视窗口时,导出后发现导出的内容只包含了可视窗口的内容。

解决方法:检查你在设置画布(canvas)的宽高时是否是通过获取dom元素的scrollHeight(dom元素的高度,包含纵向滚动条的高度),scrollWidth(dom元素的宽度,包含横向滚动条的款度)。

问题3:
        导出的pdf,某个模块被截断了,eg:一个table被分到了两个页面。

解决方法:可参考该博客,该博主已经给出了代码html转pdf分页问题_qq_251025116的博客-CSDN博客_html转pdf分页

问题4:

        导出的pdf部分元素缺失,这个问题只会在pdf的内容过大时出现,我是在导出的pdf在5M左右时出现的,当你确定你的缺失的元素是在你要导出的dom内时,若导出的pdf还是有部分内容缺失那你大概率是和我碰到一样的问题了。

解决方法:由原来的一次截图,换为分多次截图,将原来dom里面的元素进行克隆放进多个div中,由原来的对dom进行截图换为循环对多个div进行截图即可。(如果看不懂这个处理方式,请先了解html2canvas+jsPDF是如何将html转为pdf的)
        在你循环进行截图时有可能出现最后pdf里面的内容顺序是错乱的,出现这个问题是因为第一个div转为的图片添加到pdf中还未添加完,第二个div就已经截图完也开始向pdf添加图片了。此时需要在第二个div截图完向pdf添加图片的方法设置等待时间:上个伪代码

let imgBase64 = canvas.toDataURL('image/jpeg', 1.0)

setInterval(()=>{

pdf.addImage(imgBase64, 'JPEG', 0, 0, imgWidth, imgHeight);

}, 3000);
我这边调试设置等待3秒就可以了

vue html导出为pdf(解决分页问题+模糊问题)相关推荐

  1. Markdown文档如何分页以及导出的PDF如何分页

    markdown中,在需要分页的地方插入以下代码: <div STYLE="page-break-after: always;"></div> 如图所示: ...

  2. vue base64导出(pdfexcel ) 打印(pdf)

    vue base64导出(pdf和excel ) 打印(pdf) 使用场景 1.在src/utils下创建filePrintAndDownload.js文件 2.在页面中使用 3.可用于测试的best ...

  3. vue实现pdf导出,解决生成canvas模糊等问题

    vue实现pdf导出,解决生成canvas模糊等问题 参考文章: (1)vue实现pdf导出,解决生成canvas模糊等问题 (2)https://www.cnblogs.com/jsonYoung/ ...

  4. vue实现HTML转PDF (已解决清晰、页边距、图片跨域导出等问题)

    最近有需求做简历打印的功能,就又花时间研究了一下html转图片导出,里面牵扯到多页pdf导出时的分页和页边距问题,清晰度问题以及图片跨域问题等.我们一个一个来解决. 一.先说HTML转PDF的实现方法 ...

  5. vue页面导出pdf

    vue页面导出pdf 下载依赖 yarn add html2canvas // 将页面html转换成图片 yarn add jspdf // 将图片生成pdf 定义全局函数,创建htmlToPdf.j ...

  6. vue 导出为pdf

    1.安装依赖包 npm install --save html2canvas npm install jspdf --save 2.代码部分 3.导出方法 exportPdf() {html2Canv ...

  7. vue 前端导出PDF文件学起来

    首先用 npm 引入 pdf 需要的依赖,之后需要进行二次封装,才能应用 npm install html2canvas npm install jspdf --------------------- ...

  8. 页面截图导出为PDF,以及PDF强行截断分页问题的处理

    页面截图导出为PDF,以及PDF强行截断分页问题的处理 需求 将页面内容截图导出为PDF文件,如果有高度过高的表格或图片,尽量不截断而是放在下一页展示. 思路 1.将需要导出的dom,都用一个特殊的类 ...

  9. excel转pdf(解决导出的pdf和excel格式不一致问题)

    excel转pdf(解决导出的pdf和excel格式不一致问题) public static boolean getLicense() throws IOException {boolean resu ...

  10. 解决markdownPad2导出的pdf显示不出图片问题

    markdown 工具 markdown使用说明: 解决markdownPad2导出的pdf显示不出图片问题: 错误写法: ![Alt text](/pic/webrtc_jiegoutu.png) ...

最新文章

  1. linux PHP 编译安装参数详解
  2. Ubuntu 上 Node.js 安装和卸载
  3. 初等数学O 集合论基础 第三节 序关系
  4. 发现你的身形——OpenCV图像轮廓
  5. 51nod百度之星2016练习赛
  6. Example3_3(if-else语句)
  7. 读书笔记 --- 再次阅读回流与重绘
  8. python个人网站系统_利用基于Python的Pelican打造一个自己的个人纯静态网站
  9. java 审计 漏洞函数_Java Web代码审计流程与漏洞函数
  10. client 连接 host —— 虚拟机
  11. BZOJ4241历史研究题解
  12. “从0开始的FreeRTOS”系列教程第一讲
  13. 【Unity3D插件】Exploder插件分享《物体爆炸效果插件》
  14. bat 脚本操作注册表
  15. problem.conf配置内容
  16. 项目的运筹帷幄—项目进度、质量和成本最优决策理论探讨
  17. vlan互通三种方式之二第二篇
  18. 系统盘无损迁移至固态硬盘(机械硬盘)
  19. ionic 以及cordova apk打包成功,安装不成功,显示Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]
  20. 手机电路板文件_PCB工程师必看,从图纸到成品,电路板的制作只需这三大流程...

热门文章

  1. ANDROID框架揭秘
  2. python session过期_session的工作原理、django的超时时间设置及session过期判断
  3. i9-10900K比9900K性能提升了多少?i9-10900K和i9-9900K区别对比评测
  4. Educoder jQuery 入门
  5. DDS通信协议与安全实践
  6. windows实用软件
  7. 东秦数模美赛校赛记录——紧急车辆位置.题目
  8. 多种modelsim版本下载地址
  9. java对数据库的基础知识
  10. 大数据算法 十大经典算法