Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何使用JS将 HTML 页面或表单转化为 PDF文档

如何使用JS将 HTML 页面或表单转化为 PDF文档

作者头像
前端达人
发布于 2023-08-31 00:55:29
发布于 2023-08-31 00:55:29
68900
代码可运行
举报
文章被收录于专栏:前端达人前端达人
运行总次数:0
代码可运行
英文 | https://medium.com/coding-beauty/javascript-convert-html-to-pdf-99851d36e1cd

使用 jspdf 库,我们可以轻松地将任何 HTML 页面或表单转换为 PDF:

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { jsPDF } from 'jspdf';

const pdfContentEl = document.getElementById('pdf-content');

const doc = new jsPDF();

await doc.html(pdfContentEl.innerHTML).save('test.pdf');

PDF 是一种流行的文件格式,我们用来在不同平台和设备上呈现和共享具有固定布局的文档。

要开始转换,我们使用构造函数创建一个新的 jsPDF 对象。然后我们调用 html() 方法,传递包含我们想要在 PDF 中的内容的元素。在结果上,我们调用 save(),传递我们想要的输出 PDF 文件的名称。

假设我们有这样的 HTML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="pdf-content">
  <h1>Test</h1>
  <p>Here's what we're saving to PDF</p>
</div>
<button id="save-pdf">Save PDF</button>

在网页上有这样的输出:

当我们点击“保存 PDF”按钮时,jsPDF 将从 HTML 元素创建一个新的 PDF 并将其作为文件下载到浏览器中。

这是我们打开 PDF 时显示的内容:

安装 jsPDF

要开始使用 jsPDF 库,我们可以使用以下命令从 NPM 安装它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm i jspdf

安装后,我们可以将其导入到 JavaScript 文件中,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { jsPDF } from 'jspdf';

为了让这个文件在 HTML 中工作,我们可以使用像 Parcel 这样的模块捆绑器,这就是我使用的。

使用 Parcel,我们可以像这样在 HTML 中包含脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script type="module" src="index.js"></script>

我们可以在脚本中使用 TypeScript 和 ES 模块导入等现代工具,并且由于 Parcel,它可以正常工作。

在使用 npm install parcel 安装 Parcel 之后,我们使用 npx parcel my-file.html 运行 HTML。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install parcel

npx parcel my-file.html

Parcel 使 HTML 在 localhost:1234 可用,正如您可能在上面的演示中看到的那样。

自定义 HTML 到 PDF 的转换

jsPDF 构造函数接受一个自定义 PDF 转换过程的选项对象。

例如,方向选项设置生成的 PDF 的方向。

默认情况下,它是纵向的,但我们可以将其设置为横向。

自定义 PDF 方向

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const doc = new jsPDF({ orientation: 'landscape' });

自定义 PDF 单位和尺寸

使用单位和格式选项,我们可以设置输出文件中每个 PDF 页面的单位和尺寸。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const doc = new jsPDF({ orientation: 'l', unit: 'in', format: [4, 2] });

此处我们指定 2 x 4 英寸的横向导出。

将 HTML 表单转换为 PDF

jsPDF 还可以处理 HTML 元素,这些元素的外观可以根据用户交互动态变化,例如表单输入。

HTML:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form id="form">
  <input type="email" name="email" id="email" placeholder="Email" />
  <br />
  <input
    type="password"
    name="password"
    id="password"
    placeholder="Password"
  />
  <br /><br />
  <button type="submit">Submit</button>
</form>
<br />
<button id="save-pdf">Save PDF</button>

JavaScript:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { jsPDF } from 'jspdf';

const doc = new jsPDF();
const savePdf = document.getElementById('save-pdf');
const formEl = document.getElementById('form');
savePdf.addEventListener('click', async () => {
  await doc.html(formEl).save('test.pdf');
});

在网页中,我们在两个表单输入中放入了一些测试值,以查看它们是否显示在 PDF 输出中。

PDF:

但是,我们无法与 PDF 文件中的表单输入或按钮进行交互。

总结

jsPDF 库提供了一种将 HTML 内容(包括表单)转换为 PDF 格式的便捷方式。

整个过程非常简单,我们可以新建一个jsPDF对象,调用html()方法指定内容,然后使用save()方法生成输出文件。

此外,我们可以使用方向、单位和格式等选项自定义 PDF 输出。

总的来说,使用 jsPDF 简化了在我们的网络应用程序中从 HTML 内容创建 PDF 文件的过程。

最后,感谢你的阅读。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用Node.js把HTML转成PDF格式[每日前端夜话0x46]
在本文中,我将展示如何使用 Node.js、Puppeteer、headless Chrome 和 Docker 从样式复杂的 React 页面生成 PDF 文档。
疯狂的技术宅
2019/04/23
6.8K0
HTML 表单和约束验证的完整指南
在本文中,我们将研究 HTML 表单字段和 HTML5 提供的验证选项。我们还将研究如何通过使用 CSS 和 JavaScript 来增强这些功能。
玖柒的小窝
2021/09/13
8.7K0
HTML 表单和约束验证的完整指南
HTML5 表单验证 API
HTML5 表单验证在现代浏览器中得到了广泛支持。但在使用新特性时,仍需考虑兼容性问题。可以使用特性检测来提供优雅的降级处理:
空白诗
2024/12/13
1930
前端生成pdf,jspdf+html2Canvas的使用(vue)
2、安装html2Canvas: npm install --save html2canvas
前端小tips
2021/11/27
7.5K0
前端生成pdf,jspdf+html2Canvas的使用(vue)
Javascript 将 HTML 页面生成 PDF 并下载
最近碰到个需求,需要把当前页面生成 pdf,并下载。弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :)
前朝楚水
2018/07/26
4.4K0
HTML5表单及其验证
将原本type为text的input控件声明为以上特殊类型,是为了给用户呈现不同的输入界面(移动平台上支持这些不同的输入界面,这里就不细说),而且表单提交时会对其值做进一步的验证。下面展示这些新表单元素,请用支持这些表单元素的浏览器查看,IE对其支持最差。
HUC思梦
2020/09/03
1.8K0
前端生成PDF,让后端刮目相看
PDF 全称Portable Document Format (PDF)(便携文档格式),该格式的显示与操作系统、分辨率、设备等因素没有关系,不论是在Windows,Unix还是在苹果公司的Mac OS操作系统中PDF格式都通用。Adobe公司在1993年为了文档传输创造了这个文件格式,这个格式使用PostScript页面描述语言,适用于列印图像和文字(无论是在纸、胶片或非物质的CRT都可)。PDF是基于页面描述语言。它既可以像程序代码一样具有可读性,又能表示出可任意放大和缩小的矢量图。
葡萄城控件
2022/05/09
3.2K0
前端生成PDF,让后端刮目相看
vue3 如何将页面生成 pdf 导出
最近工作中有需要将一些前端页面(如报表页面等)导出为pdf的需求,博主采用的是html2Canvas + jspdf。
唐志远
2023/07/26
1.1K0
vue3 如何将页面生成 pdf 导出
6.HTML输入表单标签元素介绍
描述: 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入内容,其包含 文本框、文本域(textarea)、按钮、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等元素都要放在form标签里面或者进行form的id值的调用,否则提交的数据到不了后端。
全栈工程师修炼指南
2023/03/21
4.8K0
如何将HTML表格转换成精美的PDF
包含表格、图表和图形的 Web 应用程序通常包含将数据导出为 PDF 的选项。你有没有想过,作为一个用户,当你点击那个按钮时,幕后发生了什么?
张张
2020/11/19
7K0
如何将HTML表格转换成精美的PDF
HTML5 学习总结(二)——HTML5新增属性与表单元素
张果
2018/01/04
3.6K0
HTML5 学习总结(二)——HTML5新增属性与表单元素
HTML的笔记及展示(2)(表单元素、input元素、label、button以及HTML5新增的一些元素)
1.<form…/>元素 用于生成输入表单,该元素不会生成可视化部分。如单行文本框、多行文本框、单选按钮、复选框等都需要放在<form…/>元素内
鲲志说
2025/04/07
2030
HTML的笔记及展示(2)(表单元素、input元素、label、button以及HTML5新增的一些元素)
Javascript将HTML转成PDF并下载「支持多页」
由于html2canvas只能将它能处理的生成canvas image,因此渲染出来的结果并不是100%与原来一致。但它不需要服务器参与,整个图片都由客户端浏览器生成,使用很方便。
用户1093975
2018/08/03
3.9K0
Java与React轻松导出Excel/PDF数据
在B/S架构中,服务端导出是一种高效的方式。它将导出的逻辑放在服务端,前端仅需发起请求即可。通过在服务端完成导出后,前端再下载文件完成整个导出过程。服务端导出具有许多优点,如数据安全、适用于大规模数据场景以及不受前端性能影响等。
葡萄城控件
2024/06/21
2130
Java与React轻松导出Excel/PDF数据
HTML表单
这个元素正式定义了一个表单,就像<div>和<p>标签,它是一个容器元素,但它也支持一些特定的属性来配置表单的行为方式。它的所有属性都是可选的,但实践中最好至少要设置action属性和method属性。
HammerZe
2022/03/25
4.2K0
HTML表单
html页面导出为pdf(jsPDF、iText、wkhtmltopdf)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/79710704
DannyHoo
2018/09/13
6.8K0
html页面导出为pdf(jsPDF、iText、wkhtmltopdf)
[HTML5] 一文读懂H5新特性的应用
<header> 标签用于定义文档或文档某部分的头部内容,通常包含导航链接、网站标识、标题、搜索框等。
DevKevin
2024/08/17
5610
HTML基础-输入类型与表单验证
HTML中的表单元素和输入类型是网页交互的核心,而表单验证则是确保用户输入数据有效性和安全性的重要手段。本文将探讨输入类型的使用,以及在表单验证中常见的问题、易错点和如何避免它们,同时提供代码示例。
Jimaks
2024/06/06
1950
从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性
high:被界定为高的值的范围。 low:被界定为低的值的范围。 max:规定范围的最大值。 min:规定范围的最小值。 optimum: 规定度量的最优值。 value:规定度量的当前值。
Daotin
2018/08/31
1.6K0
从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性
jsPDF – 基于 HTML5 的强大 PDF 生成工具
jsPDF 是一个基于 HTML5 的客户端解决方案,用于生成各种用途的 PDF 文档。 使用方法很简单,只要引入 jsPDF 库,然后调用内置的方法就可以了。 米扑科技项目用到了HHTML5生成PDF,原文详见米扑博客: jsPDF – 基于 HTML5 的强大 PDF 生成工具 浏览器兼容性:  IE 10, Firefox 3+, Chrome, Safari 3+, Opera,未来将兼容 IE 10 以下版本,对于 IE10 以下的版本会使用 Downloadify 来实现文件下载功能。 支持文件
阳光岛主
2018/05/17
3.1K0
相关推荐
用Node.js把HTML转成PDF格式[每日前端夜话0x46]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验