项目场景:

例如:需要导出PDF格式


问题描述

发现:自己导出的PDF,有表格超出之后,只会截取当前屏幕可视区,下面的并不会导出

原因分析:

提示:问题出现在滚动条加错地方


解决方案:

首先:

npm install html2canvas

npm install jspdf

第二:新建一个htmlToPdf.js文件存放

// 导出页面为PDF格式

import html2Canvas from './html2canvas'

import JsPDF from './jsPdf.debug'

export default{

name:'wwutils',

toolExportPdf(fileName) {

let isCompeleted = false;

setTimeout(() => {

// 获取需要打印的区域,以div为单位,此处使用的是vue的选择器

$("iframe").remove();

var pdfDom = document.getElementById("exportImg");

$("#exportImg").scrollTop(0);

// 设置背景色

pdfDom.style.background = "#F4F7FC";

let _this = this;

var exportName = fileName; // 导出生成文件的名称

var height = $("#exportImg").outerHeight();

const Dom_height = $("#exportImg").height();

const targetDom = document.querySelector("#exportImg");

const copyDom = targetDom.cloneNode(true);

copyDom.style.width = targetDom.scrollWidth + "px";

copyDom.style.height = targetDom.scrollHeight + "px";

document.body.appendChild(copyDom);

html2Canvas(pdfDom, {

allowTaint: false,

useCORS: true,

height: targetDom.scrollHeight,

width: targetDom.scrollWidth,

onrendered: function (canvas) {

let contentWidth = canvas.width; //画布宽度

let contentHeight = canvas.height; //画布高度

let pageHeight = (contentWidth / 592.28) * 841.89;

let leftHeight = contentHeight;

let position = 0;

let imgWidth = 592.28;

let imgHeight = (592.28 / contentWidth) * contentHeight;

let pageData = canvas.toDataURL("image/jpeg", 1.0);

let PDF = new JsPDF("", "pt", "a4");

if (leftHeight < pageHeight) {

PDF.addImage(pageData,"JPEG",0,0,imgWidth,imgHeight);

} else {

while (leftHeight > 0) {

PDF.addImage(pageData,"JPEG",0,position + 4,imgWidth,imgHeight);

leftHeight -= pageHeight;

position -= 841.89;

if (leftHeight > 0) {

PDF.addPage();

}

}

}

PDF.save(exportName + ".pdf");

document.body.removeChild(copyDom);

isCompeleted = true;

// PubSub.publish("isExportPdfCompleted", {

//     state: true,

// });

},

background: "#F4F7FC",

windowHeight: targetDom.scrollHeight, // 获取y方向滚动条中的内容

y: targetDom.scrollHeight // 页面在垂直方向的滚动距离

});

}, 1000);

return isCompeleted

},

}

可以使用在main.js中引用,也可以在本地文件直接引用

前端导出PDF(纯前端功能)相关推荐

  1. pdfmake支持html,pdfMake前端导出pdf

    pdfMake前端导出pdf 目前导出PDF还是后端(或nodejs)比较好. (如果没有必要) 导出方案 后端: IText,wkhtmltopdf...等等. 前端: jsPdf,pdfKit,r ...

  2. 前端导出pdf功能(超详细)

    实现思路:将html页面生成pdf文件,需首先将页面转换为图片,然后再输出成pdf. 一.先引入html2canvas npm install html2canvas 二.项目内引入 import h ...

  3. vue导出word纯前端实现

    最近项目有个需求导出word,纯前端实现,查了查资料,用docxtemplater简直不要太简单. 直接把官网例子拿过来就可以了.!!! 官网地址 首先,新建一个docx文件,把模板先写好. 注意!! ...

  4. vue:前端导出PDF 加图片:前端

    npm i vue-to-pdf --save <div id="exportPdf" ref="exportPdf"></div> & ...

  5. 前端导出pdf以及导出内容截断的解决办法

    1.有截断的pdf导出 //导出pdf pdfExport() {// let top = document.getElementById('main');// if (top != null) {/ ...

  6. springboot导出pdf到前端浏览器预览下载

    画不多说先上成功后导出的pdf文件 2.maven依赖 <dependency><groupId>com.itextpdf</groupId><artifac ...

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

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

  8. 使用Vue导出word(纯前端,异步处理图片)

    项目需要导出word,于是乎又是查阅资料.然后自己写. 参考链接 https://github.com/evilc0des/docxtemplater-image-module-free https: ...

  9. html页面导出pdf截断问题,前端导出pdf以及导出内容截断的解决办法

    $("#downpdf").on("click", function () { document.body.scrollTop=document.documen ...

最新文章

  1. c语言机器人编程软件,Coconut编程机器人软件官方版下载_Coconut编程机器人软件 v1.3.4官方版 - Win7旗舰版...
  2. hibernate 表关系映射详解之多对多
  3. leetcode45 --- jump
  4. 现实版“奇异博士”?原来是这款神秘的“数学黑盒”
  5. python程序发布 ubuntu_发布和运行(ubuntu下python服务器)
  6. 成为0.01%!利用TensorFlow.js和深度学习,轻松阅读古草体文字
  7. Overfeat论文笔记
  8. 计算机 交换机连接设置方法,怎么用串口线连接电脑和交换机 连接步骤教程
  9. 小程序 40163_安卓微信登入codebeenused,error40163
  10. FMCW雷达多运动目标检测
  11. 代理服务器为何受欢迎?
  12. 台式电脑自带照片编辑软件将二寸照片改为一寸照片
  13. 存储过程 生成拼音码与五笔码
  14. JAVA+SSM+MySql CRM客户关系管理系统(附带源码)
  15. 2-管理Audio焦点(Managing Audio Playback)
  16. 记一个openwrt reboot异步信号处理死锁问题
  17. 大批程序员可能面临被劝退!
  18. filezilla 配置
  19. Spring注入bean报错:Error creating bean with name的网上找不到的解决方案
  20. 13、app.json - 小程序端配置文件 - 微擎小程序模块应用开发

热门文章

  1. 新款英特尔11代笔记本电脑,吃鸡真香!
  2. 结构体熟练掌握--实现通讯录
  3. 高通android 11,4290平台,更改分区
  4. linux-----压缩解压缩文件夹、文件命令详解
  5. 第一周作业(马哥linux)
  6. 云游戏音视频体验优化实践
  7. wifi 中间人攻击_什么是中间人攻击?该如何防止?
  8. 操作系统--蒋炎岩老师
  9. haroopad编辑html,走进MARKDOWN的世界
  10. 谷歌输入法的英文联想功能(v3.0 beta)