当前位置: 首页 > Web前端 > HTML

[JS]实现从网页指定区域导出PDF

时间:2023-03-28 17:01:08 HTML

的完整业务场景:1.单页,数据量大,有图片和表格,高度>8000px,内容区域高度将根据所选条件而改变。2.有底线,不是无限数据,不是无限滚动。3.数据懒加载。只有当子模块滚动到可见区域时,才会发送子模块中的请求加载新数据。现在导出上面业务场景中内容区域的PDF。那么需求就是:在网页中导出PDF,高度高,数据加载响应快。由于一开始就知道导出PDF的需求,所以我们就下定决心实现响应式加载,方便后续实现PDF导出。1、首先要实现数据响应式加载。使用IntersectionObserver。思路:类似于骨架屏,即使没有数据也会有一个初始高度。使用IntersectionObserver实现当子模块区域进入IntersectionObserver的根区域时,发送请求,请求返回后加载数据。2.导出执行前,发出所有请求,加载所有数据,内容区完全填满数据。思路:点击导出PDF时,更改样式,使根元素的高度为auto。根元素的高度变为auto后,所有的骨架区域都会进入根(因为根也被骨架区域拉伸了)。这时候所有的骨架区域都进入了IntersectionObserver的根区域,开始请求数据,然后加载数据。3、判断所有子模块数据加载完成(PDF导出完成后才能执行)思路:1、各子模块初始化时(发送请求前)在root下注册当前区域信息模块。exportComponentsStatus:{componentId1:false,componentId2:false,}2.等待子模块中请求完成,将自身componentId对应的值设置为true,待exportComponentsStatus全部为true后执行PDF导出。exportComponentsStatus:{componentId1:true,componentId2:true,}3.实现html2canvas导出pdf(html转base64图片,需要切分);jsPDF,将图片转成PDF文件并导出。同步更新你的语雀https://www.yuque.com/diracke后...