项目场景:

例如:需要导出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. 【运筹学】表上作业法 ( 最优解判别 | 初始基可行解 | 运费修改可行性方案 | 闭回路法 )
  2. 对PE文件进行十六进制代码(机器码)提取并保存到外部文件
  3. centos 安装 redmine 2.6.0.stable
  4. [Android]Volley源代码分析(店)应用
  5. 在JAX-RS中处理异步请求中的超时
  6. 剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)
  7. 三台云服务器搭建hadoop集群
  8. 5 好看的字体样式_嫌电脑字体样式太少,这款小软件几百种的样式随便你选择...
  9. Visual Studio 2005/2008的代码段编辑器
  10. 【250期门诊集锦】痛并快乐着的正则表达式
  11. day10 多进程、多线程(一)
  12. Intellij IDEA 中的 Debug 控制台输出窗口消失
  13. mysql中explain使用
  14. Zabbix 5.0 监测Windows远程桌面登录
  15. TortoiseSVN - Download下载 - 1.5.4
  16. 这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN
  17. SECS/GEM介绍
  18. kudu之tablet设计原理
  19. c语言 n是什么作用,“\n\n”在c语言中是什么意思?
  20. 人工智能-马尔可夫模型

热门文章

  1. 计算机服务器虚拟化参考文献,虚拟服务器论文,关于基于华为FusionCompute应用服务器虚拟化管理系统相关参考文献资料-免费论文范文...
  2. 基于QtAV的简易播放器(开源)
  3. 快讯:好奇号传回信息,凿岩工作准备完毕
  4. 2021年中国露营行业市场现状分析:行业发展迅猛[图]
  5. html5 css橡皮筋效果,阻止移动端浏览器下拉橡皮筋效果(下拉滚动露底)
  6. 国际标准下载的几个网站 请点赞收藏
  7. 输入英文字符,请按照字母表顺序统计字符串中所有出现的字母的个数
  8. 机器学习算法——笔记DAY1
  9. jsp导出excel
  10. DrawerLayout 高仿QQ5.2双向侧滑菜单