vue把html内容转成pdf
时间: 2025-06-23 15:25:50 浏览: 14
### 实现 Vue.js 页面内容导出为 PDF
为了实现在 Vue.js 应用程序中将 HTML 内容转换并导出为 PDF 文件的功能,可以通过 `html2canvas` 和 `jsPDF` 这两个 JavaScript 库来完成。这些工具能够捕捉网页上的 DOM 元素作为图像,并将其嵌入到 PDF 文档中。
#### 安装依赖项
首先,在项目根目录下通过命令行执行以下操作以安装所需的库:
```bash
npm install html2canvas jspdf --save
```
这会下载并将 `html2canvas` 和 `jsPDF` 添加至项目的依赖列表中[^2]。
#### 创建组件模板结构
接着定义一个简单的 Vue 组件用于展示要被导出的内容以及触发导出行为的按钮:
```html
<template>
<div>
<!-- 要导出为图片再转成PDF的部分 -->
<div id="contentToExport" ref="content">
<h1>这是标题</h1>
<p>这里是段落文字。</p>
</div>
<!-- 导出按钮 -->
<button @click="handleExport">点击这里导出为PDF</button>
</div>
</template>
```
此部分代码创建了一个带有特定 ID 的 div 来容纳待导出的内容,并设置了一个绑定事件处理函数给 button 按钮以便用户交互时调用相应的逻辑[^3]。
#### 编写脚本逻辑
最后一步是在 `<script>` 部分编写具体的业务逻辑,即当用户点击按钮后如何抓取指定区域内的 HTML 并生成 PDF 文件供下载:
```javascript
<script setup>
import { ref } from 'vue';
import jsPDF from 'jspdf'; // 引入 jsPDF 库
import html2canvas from 'html2canvas';
const content = ref(null);
function handleExport() {
const element = document.getElementById('contentToExport');
html2canvas(element).then(canvas => {
let imgData = canvas.toDataURL('image/png');
var doc = new jsPDF({
orientation: "portrait",
unit: "mm",
format: "a4"
});
doc.addImage(imgData, 'PNG', 0, 0);
doc.save("document.pdf");
});
}
</script>
```
上述代码片段展示了如何利用 `ref()` 获取目标节点,随后借助 `html2canvas` 将其渲染为画布对象;之后使用 `toDataURL()` 方法获取该画布的数据 URL 表达形式,最终由 `jsPDF` 构建新的文档实例并向其中添加图像数据,保存为名为 `"document.pdf"` 的文件提供给客户端下载[^1]。
阅读全文
相关推荐



















