使用html2canvas和jspdf将页面保存为pdf

使用,html2canvas,jspdf,页面,保存,pdf · 浏览次数 : 161

小编点评

```html

页面保存为pdf

```

正文

使用html2canvas和jspdf将页面保存位pdf

<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js" ></script>
<script src="https://unpkg.com/html2canvas@1.4.1/dist/html2canvas.js" ></script>
<button id="topdf">保存为pdf</button>

<div style="width: 600px; margin: 0 auto" id="box">
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>1
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>2
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>3
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>4
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>5
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>6
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>7
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>8
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>9
  <div><img src="./img.png" alt=""><img src="./img.png" alt=""></div>10
</div>
<script>
  var saveBtn = document.querySelector('#topdf');
  var target = document.querySelector('#box');
  saveBtn.addEventListener('click', ()=>{
    html2canvas(target).then((canvas)=>{
      const pageData = canvas.toDataURL('image/jpeg', 1.0);

      const doc = new jspdf.jsPDF({
        orientation: 'p', // 纵向  默认
        unit: 'pt', // 单位用pt
        format: 'a4',
      });
      const a4_width = 595.28; // a4纸的宽度 单位pt
      const a4_height = 841.89; //  a4纸的高度 单位pt
      const contentWidth = canvas.width; // 图片实际宽度
      const contentHeight = canvas.height; // 图片实际高度

      const pageHeight = (contentWidth / a4_width) * a4_height; // 图片的实际宽度是可能大于a4纸的,在这里计算出a4纸一页上能放的实际图片的尺寸, 根据a4纸的宽高比例计算

      let remainedHeight = contentHeight;

      const imgHeight = (a4_width / contentWidth) * contentHeight; // 图片缩放到a4宽度的情况下的图片长度

      remainedHeight -= pageHeight;

      let position = 0;
      doc.addImage(pageData, 'JPEG', 0, position, a4_width, imgHeight); // 截取第一幅图到pdf第一页
      while (remainedHeight >= 0) { // 如果还有图片没有放到pdf,继续增加pdf放置图片剩余内容;
        position = position + a4_height;
        doc.addPage();
        // 可以把 position 看成 background-position; 都是负值来表示向上/向左偏移
        doc.addImage(pageData, 'JPEG', 0, -position, a4_width, imgHeight);
        remainedHeight -= pageHeight;
      }

      doc.save(`下载.pdf`);
    })
  })
</script>

与使用html2canvas和jspdf将页面保存为pdf相似的内容:

使用html2canvas和jspdf将页面保存为pdf

使用html2canvas和jspdf将页面保存位pdf

使用Cloudflare Worker加速docker镜像

前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻烦,还好Cloudflare暂时还活着‍ 本文记录一下使用 Cloudf

使用C#/.NET解析Wiki百科数据实现获取历史上的今天

创建一个webapi项目做测试使用。 创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等 创建一个Http请求帮助类以及方法,用于获取指定URL的信息 使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析 大事记 部

Pybind11和CMake构建python扩展模块环境搭建

使用pybind11的CMake模板来创建拓展环境搭建 从Github上下载cmake_example的模板,切换分支,并升级pybind11子模块到最新版本 拉取pybind11使用cmake构建工具的模板仓库 git clone --recursive https://github.com/mr

说说RabbitMQ延迟队列实现原理?

使用 RabbitMQ 和 RocketMQ 的人是幸运的,因为这两个 MQ 自身提供了延迟队列的实现,不像用 Kafka 的同学那么苦逼,还要自己实现延迟队列。当然,这都是题外话,今天咱们重点来聊聊 RabbitMQ 延迟队列的实现原理,以及 RabbitMQ 实现延迟队列的优缺点有哪些? 很多人

使用FModel提取游戏资产

目录前言FModel简介FModel安装FModel使用初次使用资产预览资产导出附录dumperDumper-7生成usmap文件向游戏中注入dll 前言 这篇文章仅记录我作为初学者使用FModel工具提取某款游戏模型的过程。 FModel简介 FModel是一个开源软件,可以用于查看和提取UE4-

使用GSAP制作动画视频

GSAP 3Blue1Brown给我留下了深刻印象。利用动画制作视频,内容简洁,演示清晰。前两天刚好碰到一件事,我就顺便学习了一下怎么用代码做动画。 以javascrip为例,有两个动画引擎,GSAP和Animajs。由于网速的原因,询问了GPT后,我选择了GSAP来制作我的第一个动画视频。 制作动

使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类就这么简单!

前言 今天大姚给大家分享一个.NET开源、免费、跨平台(支持Windows、Linux、macOS多个操作系统)的机器学习框架:ML.NET。并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类。 ML.NET框架介绍 ML.NET 允许开发人员在其 .NET 应用程序

使用libzip压缩文件和文件夹

简单说说自己遇到的坑: 分清楚三个组件:zlib、minizip和libzip。zlib是底层和最基础的C库,用于使用Deflate算法压缩和解压缩文件流或者单个文件,但是如果要压缩文件夹就很麻烦,主要是不知道如何归档,在zip内部形成对应的目录。这时就需要用更高级别的库,也就是minizip或li

使用gzexe加密shell脚本

使用 gzexe 加密 shell 脚本是一个相对简单的过程。以下是具体的步骤: 编写你的 shell 脚本:首先,你需要有一个 shell 脚本文件,比如 myscript.sh。 确保脚本可执行:使用 chmod 命令确保你的脚本文件是可执行的: chmod +x myscript.sh 使用