vue 前端打印pdf
方法一:jspdf+html2canvas
1.首先安装jspdf,html2canvas
2.在utils下新建htmlToPdf.js
import html2canvas from 'html2canvas';
import JsPDF from 'jspdf';/*** @param ele 要生成 pdf 的DOM元素(容器)* @param padfName PDF文件生成后的文件名字* */function downloadPDF(ele, pdfName) {console.log(ele)let eleW = ele.offsetWidth;// 获得该容器的宽let eleH = ele.offsetHeight;// 获得该容器的高let eleOffsetTop = ele.offsetTop; // 获得该容器到文档顶部的距离let eleOffsetLeft = ele.offsetLeft; // 获得该容器到文档最左的距离var canvas = document.createElement("canvas");var abs = 0;let win_in = document.documentElement.clientWidth || document.body.clientWidth; // 获得当前可视窗口的宽度(不包含滚动条)let win_out = window.innerWidth; // 获得当前窗口的宽度(包含滚动条)if(win_out>win_in){// abs = (win_o - win_i)/2; // 获得滚动条长度的一半abs = (win_out - win_in)/2; // 获得滚动条宽度的一半// console.log(a, '新abs');}canvas.width = eleW * 2; // 将画布宽&&高放大两倍canvas.height = eleH * 2;var context = canvas.getContext("2d");context.scale(2, 2);context.translate(-eleOffsetLeft -abs, -eleOffsetTop);html2canvas( ele, {dpi: 300,allowTaint: true,// allowTaint: true, //允许 canvas 污染, allowTaint参数要去掉,否则是无法通过toDataURL导出canvas数据的useCORS:true //允许canvas画布内 可以跨域请求外部链接图片, 允许跨域请求。} ).then( (canvas)=>{var contentWidth = canvas.width;var contentHeight = canvas.height;//一页pdf显示html页面生成的canvas高度;var pageHeight = contentWidth / 592.28 * 841.89;//未生成pdf的html页面高度var leftHeight = contentHeight;//页面偏移var position = 0;//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高var imgWidth = 595.28;var imgHeight = 595.28/contentWidth * contentHeight;var pageData = canvas.toDataURL('image/jpeg', 1.0);// let pageData = new Image();//设置图片跨域访问pageData.setAttribute('crossOrigin', 'Anonymous');var pdf = new JsPDF('', 'pt', 'a4');//有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)//当内容未超过pdf一页显示的范围,无需分页if (leftHeight < pageHeight) {//在pdf.addImage(pageData, 'JPEG', 左,上,宽度,高度)设置在pdf中显示;pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);// pdf.addImage(pageData, 'JPEG', 20, 40, imgWidth, imgHeight);} else { // 分页while(leftHeight > 0) {pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight);leftHeight -= pageHeight;position -= 841.89;//避免添加空白页if(leftHeight > 0) {pdf.addPage();}}}//可动态生成pdf.save(pdfName);})
}
export default {downloadPDF
}
3.创建需要打印的pdf.vue
<template><div class="app-container pdf-container"><div class="btnPdf"><button @click="getpdf">导出</button></div><div id="report-continer"><div>需要打印的内容</div></div></div>
</template><script>
import htmlToPdf from '@/utils/htmlToPdf'
import '@/assets/styles/reports.scss'export default {name: 'getPdf',methods: {// pdf 导出getpdf() {htmlToPdf.downloadPDF(document.querySelector('#report-continer'), 'test')}}
}
</script><style lang="scss" scoped></style>
方法二:用window.print()
自带方法解决
window.print(); // 打印
如果只有部分样式打印,续设置打印的样式
@media print{.noprint{ // 不用打印的部分,隐藏起来display:none;}.print{ // 需要打印的部分,显示display:block;}
}
vue 前端打印pdf相关推荐
- Vue前端打印print设置自定义参数
1. 安装组件 npm install print-js --save 2.引入组件 import print from "print-js"; 3. 使用组件,(这里使用的是局部 ...
- vue 前端导出PDF文件学起来
首先用 npm 引入 pdf 需要的依赖,之后需要进行二次封装,才能应用 npm install html2canvas npm install jspdf --------------------- ...
- vue前端生成PDF文档+电子印章并导出(不用后端)
效果图: 环境安装 将页面html转换成图片 npm install --save html2canvas 将图片生成pdf npm install jspdf --save 创建htmlToPdf. ...
- html 打印预览 兼容,vue下使用 pdf.js 预览 和 打印 PDF文档 兼容React
我使用前端开发框架是vue,有一个打印PDF文档的需求. 这个需求最开始是交给后台,但是明显不切实际, 因为后台服务器,根本就无法连接打印机. 所以这个预览加打印文档的需求就交到了前端, 开始我有想过 ...
- vue下使用 pdf.js 预览 和 打印 PDF文档 兼容React
我使用前端开发框架是vue,有一个打印PDF文档的需求. 这个需求最开始是交给后台,但是明显不切实际, 因为后台服务器,根本就无法连接打印机. 所以这个预览加打印文档的需求就交到了前端, 开始我有想过 ...
- VUE使用lodop实现前端打印页面指定内容
最近做项目,遇到一个需要页面无需下载在线打印Word的功能,最初尝试直接打印页面,会导致将整个页面都打印出来,不符合要求.后期客户要求要使用lodop,这样打印与页面展示Word两个方面都是未知的东西 ...
- vue 前端png转pdf_Vue前端HTML保存为PDF的两种常用方式 「干货分享」
Vue前端HTML保存为PDF常用方式有两种.使用html2Canvas和JsPDF库,转化为图片后保存PDF. 调用浏览器window.print(),然后手动保存为PDF. 第一种 优点没有预览点 ...
- 前端vue项目(使用pdf.js) pdf展示及pdf工具栏放大缩小功能实现
前端vue项目(使用pdf.js) pdf展示及pdf工具栏放大缩小功能实现 1.vue项目pdf展示 2.pdf工具栏放大缩小功能 文章目录 前端vue项目(使用pdf.js) pdf展示及pdf工 ...
- VUE整合VUE-PRINT-NB实现前端打印功能
VUE整合VUE-PRINT-NB实现前端打印功能 插件安装 npm install vue-print-nb --save 插件安装时最好在package.json中同时加入依赖信息,便于项目上其他 ...
- Vue前端JavaScript实现PDF预览与图片预览
Vue前端JavaScript实现PDF预览与图片预览 说明 PDF.JS 代码实现 预览测试 embed与iframe标签 `<embed>` `<iframe>` 浏览器预 ...
最新文章
- nyist---组队赛(五)
- wtp-all-in-one-sdk-R-1.5 使用方法简单说明
- 【ArcGIS Pro微课1000例】0001:Win7系统ArcGIS Pro2.5安装权威教程(附软件安装包下载)
- 计算机游戏50关,YELLOW游戏全50关攻略
- 怎么看cudnn的版本好_针对此次版本削弱,怎么用好嫦娥!
- HTML引入媒体查询CSS,CSS3 多媒体查询
- Web 3.0 宣言:为什么 Web 3.0 至关重要
- 数组玩法(1):下标移位
- 微软建议用户关闭Win7桌面小工具和侧边栏
- cad中计算机的快捷键,CAD常用快捷键汇总
- 计算机桌面图标右上角出现双箭头符号,电脑桌面图标有箭头怎么办 电脑桌面图片箭头去掉方法【图文】...
- 英雄无敌3pc移植android版,今日手游:全盘移植《魔法门之英雄无敌3》
- 【TAPD】快速上手
- layim php,如何通过LayuiAdminLayIMThinkphpGateway实现小程序多客服接入系统的例子
- Fragment跳转Fragment以及闭坑指南、方法isadded()
- 逆向知识之CS辅助/外挂专题.2.实现CS1.6无限夜视仪.无限闪光烟雾高爆弹.
- matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟
- 李宏毅机器学习课程自测练习题
- 计算机01无法纯随机,玄不救非,氪不改命 如何分清游戏中的“真随机”和“伪随机”?...
- Python3爬虫抓取网易云音乐热评实战