先在html引入cdn

<script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script>

script里面写

  //导出pdf
var pdfs = document.getElementsByClassName("importPdf");
for (var i = 0; i < pdfs.length; i++) {
pdfs[i].addEventListener('click', htmlToPdf);
}
function htmlToPdf() {
// 获取HTML元素
const element = document.getElementById("dataTable");
const options = {
dpi: 192,
scale: 1,
backgroundColor: "#F1F6FE"
};
const elsSte = document.getElementById('cloneTable');
// 将元素转换为canvas对象
new Promise((resolve, reject) => {
html2canvas(element, options).then(canvas => {
resolve(canvas);
}).catch(error => {
reject(error);
});
}).then(canvas => {
var contentWidth = canvas.width;
var contentHeight = canvas.height;
var pdf = new jsPDF('1', 'pt', [contentWidth, contentHeight]);
var pageData = canvas.toDataURL('image/jpeg', 1.0);
pdf.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight);
pdf.save("deno.pdf");
}).catch(error => {
console.error(error);
});
}

html里面就写

<span class="importPdf">导出pdf</span>
<table id="dataTable">
<tr>
<th>标题</th>
</tr>
<tr>
<td>
<textarea style="width: 160px" class="multiline-textarea" name="component[]"
required>标题内容</textarea>
</td>
</tr>
</table>

文字重叠就在对应的元素上面加上letter-spacing: 1px;还是重叠就设置多点2px,4px试一下
发现textarea 有的标签内容只显示一点没有显示全部。调试了好久还是显示不全换个思路得到dom,替换标签显示

    // 获取HTML元素
const element = document.getElementById("dataTable");
var newSex = element.cloneNode(true);
// 将select标签进行复制
const newDom = newSex.innerHTML.replace(/textarea/g, 'input');
const objE = document.createElement("table");
const objBox = document.getElementById("clone_box");
objE.id = 'cloneTable';
objE.innerHTML = newDom;
objBox.append(objE)
      const elsSte = document.getElementById('cloneTable');
      new Promise((resolve, reject) => {
          html2canvas(elsSte, options).then(canvas => {
            resolve(canvas);
          }).catch(error => {
            reject(error);
          });
        }).then(canvas => {
          var contentWidth = canvas.width;
          var contentHeight = canvas.height;
          var pdf = new jsPDF('1', 'pt', [contentWidth, contentHeight]);
          var pageData = canvas.toDataURL('image/jpeg', 1.0);
          pdf.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight);
          pdf.save("车型.pdf");
          elsSte.style.display = 'none';
        }).catch(error => {
          console.error(error);
        });
//html文件里面得把clone的div在body里面加上
 <div id="clone_box"></div>
//style里面这样不会显示,导出的时候才可以显示子级的内容
    #clone_box {
      opacity: 0;
    }

换成input或者p标签什么的。但是得看元素的style替换成对应的元素才行。你不可能内联的替换成块状的。可以自己添加样式什么的

不想显示什么元素就在对应的元素上面加data-html2canvas-ignore属性就行。

      <!-- 操作列-->
<td class="action-column" data-html2canvas-ignore>
<button type="button" class="remove-row" data-index="{{ loop.index }}">删除</button>
</td>

html2canvas + jspdf导出pdf,文字重叠,样式不显示或者文字不显示的更多相关文章

  1. 纯前端html导出pdf--分页+不分页--html2canvas+jsPDF

    前言 最近在项目中,有一个导出pdf功能,需要纯前端来实现,调研了多种pdf导出方式,最终决定使用html2canvas+jsPDF来实现需求. 本文就简单介绍一下html2canvas+jsPDF导 ...

  2. vue项目中导出PDF的两种方式

    参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了.对要求好的pdf这种方式真是不行啊! 2.调用浏览器 ...

  3. React项目实现导出PDF的功能

    在做web项目中,有时候会遇到pdf导出的需求,现根据之前在公司的React项目中遇到的导出PDF需求,整理一个demo出来. 导出PDF需要用到两个依赖包:html2canvas.jspdf 1.安 ...

  4. html/jsp导出pdf格式的几种方法(jsPDF,iText,wkhtmltopdf)

    在许多生成报表的时候需要我们后台作出动态的数据,并渲染到前端生成pdf格式,Excel格式的各种报表,但是浏览器自带的生成pdf功能,windows系统的ctrl+p键就能完全搞定这一需求,但对客户来 ...

  5. confluence导出pdf 文字显示不全

    当使用confluence编辑页面时,当一行的文字过多,且中间没什么逗号分隔时,有时会出现导出的pdf文件中,这一行显示的文字不全的情况. 如: 很明显费用的费字没有显示完全,且后面还有其他的字. 可 ...

  6. 将页面的内容导出使用html2canvas+jsPDF

    第一首先是要引用 import jsPDF from 'jspdf' import html2canvas from 'html2canvas' import PDFJS from 'pdfjs-di ...

  7. 解决html2canvas.js和pdf.js导出页面问题

    最近在做项目时有这么一个需求,需要将当前html页面导出pdf到本地.由于之前是做过类似的功能的借助了两个插件分别是html2canvas.js和pdf.js,本以为是非常顺利就能完成的,实际在使用过 ...

  8. 解决html导出pdf中文乱码问题的正确姿势

    简介 本文使用jspdf 1.5.3版.GitHub地址:https://github.com/MrRio/jsPDF jspdf是歪果仁开发的,因此在一开始就没想过支持非英文以外的文字,这就导致了非 ...

  9. jsPDF生成pdf文件和中文编码

    jsPDF的简单使用以及中文编码问题的解决 文中js通过CDN引入,若是为了加载时间最好下载至本地. jsPDF的使用 jsPDF简介 jsPDF 是一个基于 HTML5 的客户端解决方案,用于在客户 ...

  10. .Net导出pdf文件,C#实现pdf导出

    最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码.可以成功的实现导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本, ...

随机推荐

  1. Web前端 -- ES6

    ES标准中不包含 DOM 和 BOM的定义,只涵盖基本数据类型.关键字.语句.运算符.内建对象.内建函数等通用语法. 本部分只学习前端开发中ES6的最少必要知识,方便后面项目开发中对代码的理解. 1. ...

  2. js中“??“和“?.“怎么用?

    ??:空值合并操作符 逻辑操作符,左侧为null和undefined时,才返回右侧的数const sum = null ?? 12console.log(sum);//输出12const sum1 = ...

  3. 《c#高级编程》第3章C#3.0中的更改(五)——扩展方法

    C#扩展方法是一种语法,可以为已有的类添加新的实例方法,而无需修改原来的类定义.它的语法形式为: ```csharppublic static void MyExtensionMethod(this ...

  4. 阿里开源自研工业级稀疏模型高性能训练框架 PAI-HybridBackend

    ​简介:近年来,随着稀疏模型对算力日益增长的需求, CPU集群必须不断扩大集群规模来满足训练的时效需求,这同时也带来了不断上升的资源成本以及实验的调试成本.为了解决这一问题,阿里云机器学习PAI平台开 ...

  5. 国内唯一!阿里云容器服务进入 Forrester 领导者象限

    ​简介:近日,国际权威咨询机构 Forrester 发布< The Forrester WaveTM: Public Cloud Container Platforms, Q1 2022 > ...

  6. RDS PostgreSQL一键大版本升级技术解密

    ​简介: 内容简要: 一.PostgreSQL行业位置 二.PostgreSQL版本升级背景 三.PostgreSQL版本升级解密 四.PostgreSQL版本升级成果 一.PostgreSQL行业位 ...

  7. 阿里云边缘云ENS再升级 四大场景应用加速产业数字化落地

    ​简介: 云栖大会 | 于10月21日上午举办的边缘云应用升级与技术创新论坛中,阿里云边缘云ENS产品全面升级,从边缘云产品.技术.行业应用等维度全面阐述阿里云在边缘计算领域的技术积累.产品& ...

  8. Flink 在顺丰的应用实践

    ​简介: 顺丰基于 Flink 建设实时数仓的思路,引入 Hudi On Flink 加速数仓宽表,以及实时数仓平台化建设的实践. 本⽂由社区志愿者苗文婷整理,内容源⾃顺丰科技大数据平台研发工程师龙逸 ...

  9. VisualStudio 如何快速添加一个 Git Tag 推送

    在 VisualStudio 的团队管理功能,提供了方便的添加 Tag 的方法,可以新建一个 Tag 添加 Tag 信息,同时推送某个特定的 Tag 到服务器.配合推 Tag 打包 NuGet 的方法 ...

  10. 一个用Python将视频变为表情包的工具

    这是一个将视频转变为表情包的工具,现实生活中当我们看到一段搞笑的视频,我们可以将这段视频喂给这段程序,生成gif表情包,这样就可以用来舍友斗图了 1.一些限制 1.这个程序不能转化超过15秒以上的视频 ...