js大屏导出图片_前端生成pdf?jspdf+html2canvas实现pdf预览和导出

本文介绍了如何使用html2canvas和jspdf在前端生成pdf,特别是面对后端只返回富文本字符串的情况。通过html2canvas将DOM转换为图片,再将图片嵌入到pdf中。详细讲解了预览、下载pdf的实现过程,以及在处理过程中需要注意的点,如等待DOM渲染完成后再截图、处理分页问题等。
摘要由CSDN通过智能技术生成

最近做后台系统遇到挺多复杂的需求,比如导出pdf,word,excel

一般这种需求后端如果存文件,然后传个流过来,前端就可以下载导出了。

但是如果后端不存文件,只返回字符串(富文本字符串),这时候咋办?

= =不知道,但是我遇到了,也只能头铁干了。

f444930f674a

吃货镇楼

路还是有的,讲一下实现方式:

html2canvas+jspdf

具体需求是在弹窗内预览,然后点击下载可以生成对应pdf,预览pdf如果后端没有给文件地址,只返回富文本字符串(类似"

123

"),比较难做,但是办法还是有的,个人感觉难点在于html2canvas生成完整截图的时机和pdf的分页。

贴一下效果:

f444930f674a

预览弹窗

f444930f674a

生成的pdf文件

思路:由于pdf不可直接编辑,个人思路是先将html截屏转化成图片,再把图片嵌入生成pdf。

html2canvas:直接npm i html2canvas -S ,用法是截图dom然后转化为canvas,具体api可以去github上看。

直接贴代码(项目用的是elementUI,核心代码在preview2pdf这个方法):

正在生成

我是猪扒封面

找不到pdf文件

下载

确定

import '@/utlis/html2canvas'

import '@/utlis/jspdf.debug'

import moment from "moment";

/*

*@description: 预览pdf弹窗

*@version V1.0

*@API:

*@ 参数 二选一, 二选一, 二选一

*previewDom 页面中可看见的预览目标类名 (比如富文本在页面中显示,其容器div类名为'.fuwenben',直接传'.fuwenben'就可以生成预览页面dom的pdf了)

*domData 页面中看不见的dom字符串(比如后台返回富文本字符串'

111
',直接传进来就可以生成pdf)

*@ 事件

* 需要在父组件指定关闭事件 onModalHidden

*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值