方法一: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相关推荐

  1. Vue前端打印print设置自定义参数

    1. 安装组件 npm install print-js --save 2.引入组件 import print from "print-js"; 3. 使用组件,(这里使用的是局部 ...

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

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

  3. vue前端生成PDF文档+电子印章并导出(不用后端)

    效果图: 环境安装 将页面html转换成图片 npm install --save html2canvas 将图片生成pdf npm install jspdf --save 创建htmlToPdf. ...

  4. html 打印预览 兼容,vue下使用 pdf.js 预览 和 打印 PDF文档 兼容React

    我使用前端开发框架是vue,有一个打印PDF文档的需求. 这个需求最开始是交给后台,但是明显不切实际, 因为后台服务器,根本就无法连接打印机. 所以这个预览加打印文档的需求就交到了前端, 开始我有想过 ...

  5. vue下使用 pdf.js 预览 和 打印 PDF文档 兼容React

    我使用前端开发框架是vue,有一个打印PDF文档的需求. 这个需求最开始是交给后台,但是明显不切实际, 因为后台服务器,根本就无法连接打印机. 所以这个预览加打印文档的需求就交到了前端, 开始我有想过 ...

  6. VUE使用lodop实现前端打印页面指定内容

    最近做项目,遇到一个需要页面无需下载在线打印Word的功能,最初尝试直接打印页面,会导致将整个页面都打印出来,不符合要求.后期客户要求要使用lodop,这样打印与页面展示Word两个方面都是未知的东西 ...

  7. vue 前端png转pdf_Vue前端HTML保存为PDF的两种常用方式 「干货分享」

    Vue前端HTML保存为PDF常用方式有两种.使用html2Canvas和JsPDF库,转化为图片后保存PDF. 调用浏览器window.print(),然后手动保存为PDF. 第一种 优点没有预览点 ...

  8. 前端vue项目(使用pdf.js) pdf展示及pdf工具栏放大缩小功能实现

    前端vue项目(使用pdf.js) pdf展示及pdf工具栏放大缩小功能实现 1.vue项目pdf展示 2.pdf工具栏放大缩小功能 文章目录 前端vue项目(使用pdf.js) pdf展示及pdf工 ...

  9. VUE整合VUE-PRINT-NB实现前端打印功能

    VUE整合VUE-PRINT-NB实现前端打印功能 插件安装 npm install vue-print-nb --save 插件安装时最好在package.json中同时加入依赖信息,便于项目上其他 ...

  10. Vue前端JavaScript实现PDF预览与图片预览

    Vue前端JavaScript实现PDF预览与图片预览 说明 PDF.JS 代码实现 预览测试 embed与iframe标签 `<embed>` `<iframe>` 浏览器预 ...

最新文章

  1. nyist---组队赛(五)
  2. wtp-all-in-one-sdk-R-1.5 使用方法简单说明
  3. 【ArcGIS Pro微课1000例】0001:Win7系统ArcGIS Pro2.5安装权威教程(附软件安装包下载)
  4. 计算机游戏50关,YELLOW游戏全50关攻略
  5. 怎么看cudnn的版本好_针对此次版本削弱,怎么用好嫦娥!
  6. HTML引入媒体查询CSS,CSS3 多媒体查询
  7. Web 3.0 宣言:为什么 Web 3.0 至关重要
  8. 数组玩法(1):下标移位
  9. 微软建议用户关闭Win7桌面小工具和侧边栏
  10. cad中计算机的快捷键,CAD常用快捷键汇总
  11. 计算机桌面图标右上角出现双箭头符号,电脑桌面图标有箭头怎么办 电脑桌面图片箭头去掉方法【图文】...
  12. 英雄无敌3pc移植android版,今日手游:全盘移植《魔法门之英雄无敌3》
  13. 【TAPD】快速上手
  14. layim php,如何通过LayuiAdminLayIMThinkphpGateway实现小程序多客服接入系统的例子
  15. Fragment跳转Fragment以及闭坑指南、方法isadded()
  16. 逆向知识之CS辅助/外挂专题.2.实现CS1.6无限夜视仪.无限闪光烟雾高爆弹.
  17. matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟
  18. 李宏毅机器学习课程自测练习题
  19. 计算机01无法纯随机,玄不救非,氪不改命 如何分清游戏中的“真随机”和“伪随机”?...
  20. Python3爬虫抓取网易云音乐热评实战

热门文章

  1. 數位照片的最佳夥伴 - Picasa2
  2. 电力电子课设日志(已完结)
  3. CentOS 编译安装 MySQL5.7
  4. 多款免费可商用的微信小程序开源源码推荐(商城类)
  5. 按键精灵手机助手如何连接安卓版按键精灵如何连接手机助手
  6. 开源电路仿真软件CircuitJS1介绍与使用入门
  7. 松本行弘的程序世界读书笔记
  8. 趣味计算机课堂示范课,枯燥的理工学科,秒变趣味课堂
  9. 外卖系统源码,如何搭建一套同城o2o外卖商城平台
  10. 智能交通灯linux代码实现,基于Linux的智能交通灯控制器设计