先在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. 试题B:小球反弹(第十五届蓝桥杯省赛B组c/c++组)

    试题B:小球反弹 我在刷博客的时候看见有人分享了蓝桥杯的题目,我想起了我之前大学打蓝桥杯刷题的时光,还是很怀念当时打比赛的氛围,关于这个小球反弹的题目,我感觉很有意思,我一开始也是走了好多弯路,然后去 ...

  2. ERP财务管理有哪些功能?如何选择合适的ERP软件开发商定制开发适合自己的ERP财务管理?

    企业日常运营中,分工明确.结构清晰的财务管理非常重要,因此在完整的ERP解决方案中,财务管理是不可或缺的部分,甚至财务管理是整个ERP解决方案的核心,其它功能模块都围绕着财务管理构建价值链创造流程,最 ...

  3. 【NOIP2013模拟联考8】匹配(match) 题解

    B 组都说看不懂--我也解释不清啊--只能写这么详细了 其实就是道板题 省流:f[i][s][j]表示字符串长度i,匹配情况s,ac自动机节点j Problem Description 给定k个字符串 ...

  4. 力扣59(java)-螺旋矩阵Ⅱ(中等)

    题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 输入:n = 3 输出:[[1,2,3],[8,9,4],[ ...

  5. 力扣138(java)- 复制带随机指针的链表(中等)

    题目: 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点. 构造这个链表的 深拷贝. 深拷贝应该正好由 n 个 全新 节点组成,其 ...

  6. 如何使用Arthas提高日常开发效率?

    简介: 1. Arthas有什么功能,怎么用,请看:Arthas使用手册 2. Arthas命令比较复杂,一个帮助生成命令的IDEA插件:arthas idea plugin 使用文档 3. 基于Ar ...

  7. 运营也用的起来的数据分析工具:Quick BI即席分析详解

    ​简介: 数据部门是一个容易被投诉的"高危"部门,需求响应慢.数据准确性不高会影响业务的发展. 然而数据分析师每周动辄就有几十个需求在手,无限的加班也无法解决所有问题,到底怎样才能 ...

  8. [ML] 通过llama.cpp与羊驼聊天的网页界面- 详解 Serge 的启动使用

      Serge 虽然能够让我们在笔记本上跑起来 7B模型, 但实际运行非常消耗CPU,对话生成响应非常非常慢. 1. 官方指导是使用如下命令直接运行: $ docker run -d -v weigh ...

  9. dotnet 给 NuGet 包加上 Aliases 别名解决类型冲突

    有时某个相同命名空间相同名字的类型被两个不同的 NuGet 包定义了,尽管这是非常少见的事情,咱需要使用到其中的一个 NuGet 包的类型,但默认情况下将会因为类型冲突而构建不通过.本文将告诉大家如何 ...

  10. MAUI 已知问题 PathFigureCollectionConverter 非线程安全

    在 MAUI 里,可以使用 PathFigureCollectionConverter 将 Path 字符串转换为 PathFigureCollection 对象,从而实现从 Path 字符串转换为路 ...