首頁 >web前端 >前端問答 >nodejs 轉pdf

nodejs 轉pdf

WBOY
WBOY原創
2023-05-23 12:27:071773瀏覽

隨著網路的發展,越來越多的網頁需要轉換為 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