IT评测·应用市场-qidao123.com

标题: 纯前端实现导出pdf文件(服务端不到场) [打印本页]

作者: 涛声依旧在    时间: 2024-7-13 22:59
标题: 纯前端实现导出pdf文件(服务端不到场)
大抵查阅了现阶段利用较多的几种方案,,大概有以下几种方式:
一、原生window.print()方法导出pdf
二、jspdf
三、jspdf + html2canvas
四、pdfmake
方案长处缺点
window.print()1、兼容性最好
2、可以将任意内容导出成 pdf 文档, 甚至黑白改页面上的内容
1、调用方法时部分条件下导出pdf需要用户手动选择
 
jspdf 1. 调用方法创建 pdf 文件,对于简单的内容可直接利用,
2. 也可以将 dom 节点转换为 pdf
3、生成内容为文本可复制
1、对中文不友好,会有乱码,需要引入字体库办理乱码题目
2、天职dom内容转pdf效果较差, 丢失大量样式设置
3、假如想要导出的pdf文件中包含图片,视觉效果略微含糊
4、pdf分页不利益理
 
 jspdf + html2canvas
1、在jspdf上将生成效果不佳的部分可以转成图片,实用于对样式有要求的场景
2、将乱码部分转为了图片,办理了中文乱码题目
3、没有预览点击即可生存
1、假如内容包含echart图表或者别的图表,该内容需要转图片
2、生成的pdf实际为图片,不支持复制
3、不同浏览器生成可能会有略微差异(页面周边留白部分差异)
 4、由于整体效果为图片,导致pdf文件较大(两页2.5MB左右)
5、pdf分页不利益理
pdfmake1、分页利益理1、js对象定义文档内容,对数据布局有固定要求
 2、图表依旧需要转图片

以上方式可有利弊,利用还需根据需求及pdf文件的复杂水平去综合思量
方案一:原生window.print()
       推荐两篇博主的文章即可了解到该方法的详细利用
        1、聊一聊浏览器打印 - window.print
        2、前端实现网页打印详解
个人测试效果如下
由于是后台管理体系,导出不想包含左侧菜单栏和顶部区域,以是只对company-detail类名div中的内容举行导出,做了一个暂时导出按钮

假设该页面为想要导出的页面

点击打印如下

注:由于测试,代码中并没有去做样式处置惩罚,可以看到效果还不错,加上样式基本可以还原原来的页面,假如是项目需求更多的是文本,表格信息想导出,同时又能担当需要用户手动选择导出为pdf时,这个方案总体最好
方案二:jspdf


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4