本教程介绍如何在Vue项目中实现将HTML内容转换为PDF文件并进行下载、导出及打印的功能。
Vue 实现 HTML 转 PDF 下载导出及打印
在本段落中,我们将介绍如何使用 Vue.js 实现 HTML 转换为PDF下载、导出以及打印的功能。此功能可在项目中实现报表的下载与打印等需求。文章将从插件安装、图片转换、HTML转PDF、PDF下载和打印等方面进行详细介绍。
一、插件安装
我们需要安装两个库:html2canvas 和 jspdf。其中,html2canvas 用于把 HTML 转换成图像,jspdf 则可以进一步将生成的图像转化为 PDF 格式文件。通过 npm 安装这两个库:
```
npm install html2canvas --save
npm install jspdf --save
```
二、图片转换
在从HTML转PDF之前,我们需要先将图片转化成base64编码字符串形式。我们可以使用axios来完成这个步骤。
三、HTML 转换为 PDF
现在我们能够利用html2canvas和jspdf把 HTML 内容转化为PDF格式了。可以创建一个名为 htmlToPdf.js 的文件,并写入如下代码:
```
import axios from axios
import html2Canvas from html2canvas
import JsPDF from jspdf
const url = // 自己的 URL 地址
var PDF = new JsPDF(, pt, a4)
export function getPdf(title, id) {
html2Canvas(document.querySelector(`#${id}`), {
allowTaint: true
}).then(function (canvas) {
let contentWidth = canvas.width;
let contentHeight = canvas.height;
let pageHeight = contentWidth + 592.28 * 841.89;
let leftHeight = contentHeight;
let position = 0;
let imgWidth = 595.28;
let imgHeight = (contentWidth * contentHeight) / canvas.width;
if (leftHeight < pageHeight) {
PDF.addImage(canvas.toDataURL(image/jpeg, 1.0), JPEG, 0, 0, imgWidth, imgHeight);
} else {
while (leftHeight > 0) {
PDF.addPage();
PDF.addImage(canvas.toDataURL(image/jpeg, 1.0), JPEG, 0, position - leftHeight + pageHeight, imgWidth, imgHeight);
leftHeight -= pageHeight;
}
}
// 下载PDF文件
PDF.save(title + .pdf);
});
}
```
四、打印页面
我们可以在 Vue 组件中使用上述的函数来实现页面打印功能。在模板里添加一个容器,并通过 ref 属性获取该容器的内容,将其转换为图片后进一步转化为 PDF 格式。
```
![]()
多大的 hdhdhdhhdhda 哈哈哈哈哈哈哈哈哈
在上述代码中,我们使用了 img2base64 函数将图片转换为 base64 编码的字符串,并且使用 getPdf 函数将 HTML 转换为 PDF 格式文件并进行下载或打印。