📅  最后修改于: 2023-12-03 15:23:23.453000             🧑  作者: Mango
在Web应用程序中,经常需要在前端上生成PDF并允许用户下载。这个过程也称为'前端PDF导出'。这篇文章介绍如何在JavaScript中下载PDF。
jsPDF是一个使用JavaScript创建PDF文件的库。在JavaScript引入jsPDF库后,可以使用其API来动态创建PDF,并从前端下载。
// 从模板创建pdf
const pdfDoc = new jsPDF();
// 添加文本
pdfDoc.text("Hello World!", 10, 10);
// 将pdf下载到本地
pdfDoc.save("hello_world.pdf");
上述代码会生成一个只包含“ Hello World!”的PDF,然后将其下载到本地。
PDFKit是一个用于Node.js和浏览器的PDF文档生成器,提供用于创建和编辑PDF文档的api。 PDFKit在服务器上工作,产生模板,前端则只用负责从服务器获取PDF文件。
可以通过以下代码在服务器上创建PDF,然后将其发送到前端以供下载:
// server.js
const PDFDocument = require("pdfkit");
const fs = require("fs");
// 创建PDF
const doc = new PDFDocument();
doc.pipe(fs.createWriteStream("output.pdf"));
doc.text("Hello World!");
doc.end();
// 服务器启动后,将PDF发送到前端
app.get("/download", (req, res) => {
const filePath = `${__dirname}/output.pdf`;
const fileName = "hello_world.pdf";
res.download(filePath, fileName);
});
在上述代码中,PDF被创建并保存到服务器上。 与前面的示例不同,PDF实际上不会从前端生成,而是在服务器上生成,并通过Express.js路由发送到前端以供下载。
PDF.js是一个用于呈现具有PDF特性的HTML元素的JavaScript库,并为浏览器提供了一个完整的PDF查看器。 PDF.js不是一个用于创建PDF文件的库,但是如果程序员需要在线查看和下载PDF文件,可能会有用。
PDF.js的用法如下:
<!--引入PDF.js库-->
<script src="path/to/pdf.js"></script>
<!--呈现PDF的HTML元素-->
<canvas id="pdf-render"></canvas>
<!--PDF.js代码-->
<script>
// 获取pdf元素
const canvas = document.getElementById("pdf-render");
// 获取pdf.js渲染器
const pdfRenderer = pdfjsLib.getDocument("my_pdf.pdf");
// 渲染pdf
pdfRenderer.promise.then(pdf => {
pdf.getPage(1)
.then(page => {
const viewport = page.getViewport({scale: 1.0});
const context = canvas.getContext("2d");
canvas.height = viewport.height;
canvas.width = viewport.width;
const renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
</script>
在上述代码中,首先引入PDF.js库。 然后,使用canvas元素来呈现PDF文件的页面。渲染PDF文件需要使用PDF.js的API,其中viewport和context对象显示了独立于PDF文件的缩放和渲染选项。 最后,PDF文件的第一页在canvas上呈现。
在Web应用程序中,向前端提供下载PDF的功能成为了一个必不可少的功能,本文介绍了PDFJs,jsPDF和PDFKit等库来实现这个过程。 无论是生成PDF还是从服务器上下载,还是在线呈现PDF,都有一些现成的库可供使用。