JS-页面截图下载为pdf

这个需要两个 js 库支持,html2canvas 和 jspdf。

下载:

npm install html2canvas --save

npm install jspdf--save

引用:

import { jsPDF } from 'jspdf';

import html2canvas from 'html2canvas';

直接上代码:

复制代码
const downloadPDF = () => {
  const element: any = document.querySelector('.app');
  // const { scrollHeight, scrollWidth, offsetHeight, height } = element;
  const opts = {
    scale: 3, // 缩放比例,提高生成图片清晰度
    useCORS: true, // 允许加载跨域的图片
    allowTaint: false, // 允许图片跨域,和 useCORS 二者不可共同使用
    tainttest: true, // 检测每张图片都已经加载完成
    logging: true, // 日志开关,发布的时候记得改成 false
    height: element.offsetHeight
  };
  html2canvas(element, opts).then((canvas) => {
    let contentWidth = canvas.width;
    let contentHeight = canvas.height;
    let pageHeight = contentWidth / 592.28 * 841.89 - 40;
    let leftHeight = contentHeight;
    let position = 20;
    let imgWidth = 570;
    let imgHeight = 592.28 / contentWidth * contentHeight;
    let pageData = canvas.toDataURL('image/jpeg', 1.0);
    let PDF = new jsPDF('p', 'pt', 'a4');
    if (leftHeight < pageHeight) {
      PDF.addImage(pageData, 'JPEG', 14, 20, imgWidth, imgHeight);
    } else {
      while (leftHeight > 0) {
        PDF.addImage(pageData, 'JPEG', 14, position, imgWidth, imgHeight);
        leftHeight -= pageHeight;
        position -= 841.89;
        if (leftHeight > 0) {
          PDF.addPage();
        }
      }
    }
    PDF.save(2222 + '.pdf');
  });
};
相关推荐
托比-马奎尔6 分钟前
ES6变量与解构:let、const与模板字符串全解析
javascript
l1t24 分钟前
分析xml标签属性和压缩级别对xlsx文件读取解析的影响
xml·开发语言·python·sql·duckdb
Jenkinscao37 分钟前
我从零开始学习C语言(13)- 循环语句 PART2
c语言·开发语言·学习
王伯爵1 小时前
go语言中的select的用法和使用场景
开发语言·数据库·golang
水煮白菜王1 小时前
从零搭建 React 工程化项目
前端·javascript·react.js
Chandler_Song1 小时前
【Python代码】谷歌专利CSV处理函数
开发语言·python·pandas
我是一只菜菜1 小时前
中国大学MOOC--C语言第十一周结构类型
c语言·开发语言
mosen8681 小时前
易混淆的CommonJS和ESM(ES Module)及它们区别
javascript·node.js·express
源代码•宸3 小时前
网络流量分析——基础知识(二)(Tcpdump 基础知识)
运维·开发语言·网络·c++·经验分享·tcpdump
weixin_516875654 小时前
力扣 30 天 JavaScript 挑战 第37天 第九题笔记 知识点: 剩余参数,拓展运算符
javascript·笔记·leetcode