jQuery -jsPDF - html汇出PDF

step
1.import script.js
2.add export_content <div id="export_content"></div>
3.add button : exportToPdf <button id="exportToPdf">汇出PDF</button>
4.add script function

目前问题:如果换页,文字有可能被切成一半.一半在页1,一半在页2

<head>

          <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
          <script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.js"></script>
          <script src="https://cdn.bootcss.com/jspdf/1.3.4/jspdf.debug.js"></script>

              
          <script type="text/javascript">
              window.onload = function () {
                  var downPdf = document.getElementById("exportToPdf");
                  downPdf.onclick = function () {
                      html2canvas(
                              document.getElementById("export_content"),
                              {
                                  dpi: 172,//汇出pdf清晰度
                                  onrendered: function (canvas) {
                                      var contentWidth = canvas.width;
                                      var contentHeight = canvas.height;

                                      //一页pdf显示html页面生成的canvas高度;
                                      var pageHeight = contentWidth / 592.28 * 841.89;
                                      //未生成pdf的html页面高度
                                      var leftHeight = contentHeight;
                                      //pdf页面偏移
                                      var position = 0;
                                      //html页面生成的canvas在pdf中图片的宽高(a4纸的尺寸[595.28,841.89])
                                      var imgWidth = 595.28;
                                      var imgHeight = 592.28 / contentWidth * contentHeight;

                                      var pageData = canvas.toDataURL('image/jpeg', 1.0);
                                      var pdf = new jsPDF('', 'pt', 'a4');

                                      //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
                                      //当内容未超过pdf一页显示的范围,无需分页
                                      if (leftHeight < pageHeight) {
                                          pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
                                      } else {
                                          while (leftHeight > 0) {
                                              pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
                                              leftHeight -= pageHeight;
                                              position -= 841.89;
                                              //避免新增空白页
                                              if (leftHeight > 0) {
                                                  pdf.addPage();
                                              }
                                          }
                                      }
                                      pdf.save('content.pdf');
                                  },
                                  //背景设为白色(预设为黑色)
                                  background: "#fff"
                              })
                  }
              }
          </script>
</head>

ref
https://www.itread01.com/content/1543721531.html

https://www.twblogs.net/a/5cfebb73bd9eee14644ef250


<<:  邦帮忙乾净无广告自干版

>>:  标记式语言(Markup Language)

Day8 Let's ODOO: View(1) Basic Views

今天我们介绍ODOO的view,以xml为写法,有三种主要的View,以之前设计的Model为例,并...

Day4 让我们来 Build 出自己的 NiFi 服务吧

Docker & Docker Compose installation 今天我们就来快速地...

没想太多就用了 MongoDB 的结果 (下)

除了(中)提到的问题以外,使用久了之後,又出现其他问题,有些是在 mongoDB 里无法解决的,我们...

30天程序语言研究

今天是30天程序语言研究的第二十三天,由於资料库开发的部分我是负责前端所以想说顺便多练习一下其他开发...

[区块链&DAPP介绍 Day15] Solidity 教学 - events

今天来介绍一下 solidity 里面一个很特殊的东西 events。 我们介绍了这几天,都还没有看...