html2canvas + jspdf导出pdf,文字重叠,样式不显示或者文字不显示
先在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)
//html文件里面得把clone的div在body里面加上
换成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,文字重叠,样式不显示或者文字不显示的更多相关文章
- 纯前端html导出pdf--分页+不分页--html2canvas+jsPDF
前言 最近在项目中,有一个导出pdf功能,需要纯前端来实现,调研了多种pdf导出方式,最终决定使用html2canvas+jsPDF来实现需求. 本文就简单介绍一下html2canvas+jsPDF导 ...
- vue项目中导出PDF的两种方式
参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了.对要求好的pdf这种方式真是不行啊! 2.调用浏览器 ...
- React项目实现导出PDF的功能
在做web项目中,有时候会遇到pdf导出的需求,现根据之前在公司的React项目中遇到的导出PDF需求,整理一个demo出来. 导出PDF需要用到两个依赖包:html2canvas.jspdf 1.安 ...
- html/jsp导出pdf格式的几种方法(jsPDF,iText,wkhtmltopdf)
在许多生成报表的时候需要我们后台作出动态的数据,并渲染到前端生成pdf格式,Excel格式的各种报表,但是浏览器自带的生成pdf功能,windows系统的ctrl+p键就能完全搞定这一需求,但对客户来 ...
- confluence导出pdf 文字显示不全
当使用confluence编辑页面时,当一行的文字过多,且中间没什么逗号分隔时,有时会出现导出的pdf文件中,这一行显示的文字不全的情况. 如: 很明显费用的费字没有显示完全,且后面还有其他的字. 可 ...
- 将页面的内容导出使用html2canvas+jsPDF
第一首先是要引用 import jsPDF from 'jspdf' import html2canvas from 'html2canvas' import PDFJS from 'pdfjs-di ...
- 解决html2canvas.js和pdf.js导出页面问题
最近在做项目时有这么一个需求,需要将当前html页面导出pdf到本地.由于之前是做过类似的功能的借助了两个插件分别是html2canvas.js和pdf.js,本以为是非常顺利就能完成的,实际在使用过 ...
- 解决html导出pdf中文乱码问题的正确姿势
简介 本文使用jspdf 1.5.3版.GitHub地址:https://github.com/MrRio/jsPDF jspdf是歪果仁开发的,因此在一开始就没想过支持非英文以外的文字,这就导致了非 ...
- jsPDF生成pdf文件和中文编码
jsPDF的简单使用以及中文编码问题的解决 文中js通过CDN引入,若是为了加载时间最好下载至本地. jsPDF的使用 jsPDF简介 jsPDF 是一个基于 HTML5 的客户端解决方案,用于在客户 ...
- .Net导出pdf文件,C#实现pdf导出
最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码.可以成功的实现导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本, ...
随机推荐
- 10个常用的JS工具库,80%的项目都在用
高手区别于普通人的重要一点是,他们善于利用工具,把更多的时间留给了规划和思考.写代码也是同样的道理,工具用好了,你就有更多的时间来规划架构和攻克难点.今天就给大家分享一下当前最流行的 js 工具库,如 ...
- WAF网站访问限制
请参考:https://www.cnblogs.com/yangyangblog/p/14930159.html 文件下载的地方可以网络搜索,这里提供IIS7 WINDOWS64位版本:https:/ ...
- 在RockyLinux 9.3环境中采用RPM模式部署Oracle 19C
在RockyLinux 9.3环境中采用RPM模式部署Oracle 19C 用途 在开发数据库系统时,可以验证功能是否与Oracle的表现一致,验证正确性和兼容性 限制 虚拟机安装,CPU 2*4 内 ...
- OS如何保持对计算机的控制权?
前面我们提到:OS希望在保持控制权的同时,为用户提供高性能的并发. 那么OS究竟是如何保持对计算机的控制权呢?这似乎是一个令人迷惑(但很重要!)的问题:OS也是进程,自然也需要计算资源.那既然我们希望 ...
- 1.css的初认识
1.什么是CSS? Cascading Style Sheet 层叠级联样式表 CSS:表现层(美化网页) 字体.颜色.边距.高度.宽度.背景图片.网页定位.网页浮动.... 2.CSS发展史 CSS ...
- 什么是好的错误消息? 讨论一下Java系统中的错误码设计
简介:一个好的Error Message主要包含三个部分:Context: 什么导致了错误?发生错误的时候代码想做什么?The error itself: 到底是什么导致了失败?具体的原因和当时的数据 ...
- 使用率激增 250%,这份报告再次将 Serverless 推向幕前
简介: 本文是对 Datadog 最新的一份 Serverless 报告的解读,欢迎大家留言讨论. 本文是对 Datadog 最新的一份 Serverless 报告的解读,欢迎大家留言讨论. 每项新 ...
- [GPT] golang 有那么多系统包 该如何了解和学习
在学习和了解Golang(Go语言)的系统包时,可以遵循以下步骤来逐步熟悉并掌握它们: 1. 官方文档阅读: 首先从官方文档入手,Go的标准库文档非常详尽且易于理解.你可以访问 Go标准库 来查看各个 ...
- dotnet 6 HttpClientHandler 和 SocketsHttpHandler 有什么差别
本文来告诉大家在 dotnet 6 的 HttpClientHandler 和 SocketsHttpHandler 两个类型有什么不同 在创建 HttpClient 时,可以在 HttpClient ...
- Ansible的yaml文件
ansible提供的脚本,遵循规范yaml(一般用于写配置文件) 可用于配制文件的语言:yaml.xml.json - 冒号后面必须有空格 - 横线后面必须要空格 - 严格保持对齐 - 等号前面不能有 ...