首页  >  文章  >  web前端  >  nodejs 转pdf

nodejs 转pdf

WBOY
WBOY原创
2023-05-23 12:27:071717浏览

随着互联网的发展,越来越多的网页需要转换为 PDF 文件以便于打印、分享和保存。Node.js 的出现为我们提供了一种可以在服务器端运行的环境,使得将网页转换为 PDF 文件变得更加方便和高效。本文将介绍如何使用 Node.js 将网页转换为 PDF 文件。

一、安装 Node.js 和相关模块

要使用 Node.js 转换网页为 PDF 文件,首先需要在计算机上安装 Node.js 环境。Node.js 可以从官方网站 https://nodejs.org/ 下载并安装。

安装完 Node.js 后,需要安装一些相关模块:

  1. Express:提供 Web 应用程序开发框架。
  2. Puppeteer:Google 开发的一个用于控制 headless Chrome 的 Node.js 库。

可以通过以下命令在命令行工具中安装:

npm install express puppeteer

二、编写代码

在安装 Node.js 和相关模块后,开始编写代码。下面是一个简单的 Express 应用程序,在浏览器中加载网页时会自动将网页转换为 PDF 文件:

const express = require('express')
const puppeteer = require('puppeteer')

const app = express()
const port = 3000

app.get('/', async (req, res) => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://www.example.com')
  const pdf = await page.pdf()
  res.contentType("application/pdf")
  res.send(pdf)
  await browser.close()
})

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`)
})

这个应用程序使用 Express 框架创建了一个 Web 服务器,并且使用Puppeteer库将网页转换为 PDF 文件。打开浏览器并输入 http://localhost:3000 就可以看到转换后的 PDF 文件。

三、参数设置

Puppeteer 库可以设置许多参数,以便在转换网页为 PDF 文件的过程中进行定制,例如:页面大小、边距、页眉/页脚、缩放和分页等。下面列出一些常用的参数设置:

  1. format:网页的页面格式。可以设置为 A4、Letter 等标准页面格式,也可以是自定义的页面尺寸。
  2. margin:网页的边距。可以设置为上边距、下边距、左边距、右边距等。
  3. headerTemplate/footerTemplate:可以设置页眉和页脚的 HTML 模板。可以在模板中添加一个类名为page 的元素,在其中添加转换后的页码。
  4. displayHeaderFooter:可以设置是否显示页眉和页脚。设为true 就显示,设为false 就不显示。
  5. scale:可以设置网页的缩放比例,以适应输出的 PDF 文件。
  6. pageRanges:可以设置需要转换的页码范围,以适应多页文档的转换。例如 pageRanges: '1-10' 表示只转换第1到第10页的内容。

下面是一个在转换网页为 PDF 文件时设置一些参数的例子:

const express = require('express')
const puppeteer = require('puppeteer')

const app = express()
const port = 3000

app.get('/', async (req, res) => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://www.example.com')

  const pdf = await page.pdf({
    format: 'A4',
    margin: {
      top: '20mm',
      right: '20mm',
      bottom: '20mm',
      left: '20mm'
    },
    displayHeaderFooter: true,
    headerTemplate: '<div class="page-number"></div>',
    footerTemplate:
      '<div class="page-number"></div>',
    scale: 0.8
  })

  res.contentType("application/pdf")
  res.send(pdf)
  await browser.close()
})

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`)
})

这个应用程序设置了 A4 页面格式、20 毫米的边距、显示页眉和页脚、页眉和页脚模板、0.8倍缩放比例,并控制输出的 PDF 文件只包含第 1 到第 10 页。

四、总结

使用 Node.js 将网页转换为 PDF 文件是非常方便和高效的。Puppeteer 库提供了完整的控制 headless Chrome 的功能,可以轻松地控制页面大小、边距、页眉/页脚、缩放和分页等,以满足不同的需求。通过本文的介绍,相信读者对于将网页转换为 PDF 文件的过程有一定的了解,可以在实践中不断完善和优化。

以上是nodejs 转pdf的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn