首页 > 其他分享 >使用html2canvas和jspdf将页面保存位pdf

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

时间:2022-11-24 22:34:25浏览次数:67  
标签:jspdf const doc html2canvas width a4 pdf position

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

<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js" ></script>
<script src="https://unpkg.com/[email protected]/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>

标签:jspdf,const,doc,html2canvas,width,a4,pdf,position
From: https://www.cnblogs.com/walkermag/p/16923669.html

相关文章

  • PDF科普:什么是PDF,PDF有什么好处
    什么是PDF文件可移植文档格式(PDF),是Adobe于1992年开发的一种文件格式,以一种与应用软件、硬件和操作系统无关的方式显示文档,包括文本格式和图像。基于PostScript语言,每个......
  • WatchPdf
    WatchPdfiframe+pdfsrc//MOCKpdfconst[pdfUrl,setPdfUrl]=useState();const[iframeVisible,setIframeVisible]=useState(false);const[loading,setLoadi......
  • Java 8 itextpdf 实现 给 pdf 添加水印
    前言给pdf添加水印功能是日常开发中经常会遇到的问题,下面我们就来看看怎么通过Java实现给pdf文件添加水印环境新创建个SpringBoot的项目,然后添加itextpdf的依赖,具体的pom.x......
  • C# 如何将Word、Excel、PPT转成PDF文件(使用Spire提供的组件)学习
    第一步:新建一个winform项目,下载Spire组件dll下载Spire.Doc、Spire.XLS、Spire.Presentation,路径:工具--NuGet包管理器--管理解决方案NuGet程序包1)Spire.Doc:word转成其它......
  • 论文3 VScode&texlive&SumatraPDF打造完美书写论文工具
    文章目录​​介绍一下:​​​​一.软件下载安装​​​​1.1下载​​​​1.2安装编译器texlive2020​​​​1.3安装PDF阅读器​​​​1.4编辑器VScode​​​​a.直接百......
  • SAP 事务 pdf! 生成PDF的内部实现和借鉴
    debug, pdf! 调用的是这个 bapi实现的 :SSFCOMP_PDF_PREVIEWSSFCOMP_PDF_PREVIEW又是通过 CONVERT_OTF来产生PDF的。screen0300,是一个加了webbrowser的屏幕,......
  • java pdf 合并
    packagecom.hefeng.demo.controller;importjava.io.File;importjava.io.IOException;importjava.util.*;importorg.apache.pdfbox.io.MemoryUsageSetting;impo......
  • 前端下载图片或pdf而不是预览方法
    一、下载pdf时使用 a 链接的 download 方法调用:this.downloadFile_2('文件名','url链接')本地无法下载的话,可以试试放到线上文件名要加 .pdf 后缀//fileName是......
  • 拥抱开源 第二版 电子书 pdf
    作者:[美]戈登•哈夫(GordonHaff)出版社:人民邮电出版社出品方:异步图书译者:X-lab开放实验室 关注公众号:红宸笑。回复:电子书即可  本书适合对开源软件感......
  • 拥抱开源 第二版 电子书 pdf
    作者:[美]戈登•哈夫(GordonHaff)出版社:人民邮电出版社出品方:异步图书译者:X-lab开放实验室 链接:拥抱开源第二版  ......