📜  在javascript中下载pdf(1)

📅  最后修改于: 2023-12-03 15:23:23.453000             🧑  作者: Mango

在JavaScript中下载PDF

在Web应用程序中,经常需要在前端上生成PDF并允许用户下载。这个过程也称为'前端PDF导出'。这篇文章介绍如何在JavaScript中下载PDF。

前提条件
  • 网页需包含PDF模板,例如用Adobe Acrobat或者任何PDF编辑器制作的PDF。 如果没有这个初始模板,程序员可以使用libraries材料来动态地生成PDF。
  • 要导出的数据已经被处理成正确的格式,这样会更方便。
方法1: 使用jsPDF

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,然后将其下载到本地。

方法2: 使用PDFKit

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路由发送到前端以供下载。

方法3: 使用PDF.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,都有一些现成的库可供使用。