隨著網路的發展,越來越多的網頁需要轉換為 PDF 檔案以便於列印、分享和保存。 Node.js 的出現為我們提供了一個可以在伺服器端運行的環境,使得將網頁轉換為 PDF 檔案變得更加方便和有效率。本文將介紹如何使用 Node.js 將網頁轉換為 PDF 檔案。
一、安裝 Node.js 和相關模組
要使用 Node.js 轉換網頁為 PDF 文件,首先需要在電腦上安裝 Node.js 環境。 Node.js 可從官方網站 https://nodejs.org/ 下載並安裝。
安裝完 Node.js 後,需要安裝一些相關模組:
- Express:提供 Web 應用程式開發框架。
- Puppeteer:Google 開發的一個用於控制 headless Chrome 的 Node.js 函式庫。
可以透過以下命令在命令列工具中安裝:
1 | npm install express puppeteer
|
登入後複製
二、編寫程式碼
在安裝Node.js 和相關模組後,開始編寫程式碼。以下是一個簡單的Express 應用程序,在瀏覽器中加載網頁時會自動將網頁轉換為PDF 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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:
})
|
登入後複製
這個應用程式使用Express 框架創建了一個Web 伺服器,並且使用Puppeteer庫將網頁轉換為PDF 文件。開啟瀏覽器並輸入 http://localhost:3000 就可以看到轉換後的 PDF 檔案。
三、參數設定
Puppeteer 庫可以設定許多參數,以便在轉換網頁為PDF 文件的過程中進行定制,例如:頁面大小、邊距、頁眉/頁腳、縮放和分頁等。以下列出一些常用的參數設定:
- format:網頁的頁面格式。可以設定為 A4、Letter 等標準頁面格式,也可以是自訂的頁面尺寸。
- margin:網頁的邊距。可設定為上邊距、下邊距、左邊距、右邊距等。
- headerTemplate/footerTemplate:可以設定頁首和頁尾的 HTML 範本。可以在範本中新增一個類別名為page 的元素,在其中新增轉換後的頁碼。
- displayHeaderFooter:可以設定是否顯示頁首和頁尾。設為true 就顯示,設為false 就不顯示。
- scale:可以設定網頁的縮放比例,以適應輸出的 PDF 檔案。
- pageRanges:可以設定需要轉換的頁碼範圍,以適應多頁文件的轉換。例如 pageRanges: '1-10' 表示只轉換第1到第10頁的內容。
以下是一個在轉換網頁為PDF 檔案時設定一些參數的範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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:
})
|
登入後複製
這個應用程式設定了A4 頁面格式、20 毫米的邊距、顯示頁眉和頁尾、頁首和頁尾模板、0.8倍縮放比例,並控制輸出的PDF 文件只包含第1 到第10 頁。
四、總結
使用 Node.js 將網頁轉換為 PDF 檔案是非常方便且有效率的。 Puppeteer 庫提供了完整的控制 headless Chrome 的功能,可以輕鬆控制頁面大小、邊距、頁眉/頁腳、縮放和分頁等,以滿足不同的需求。透過本文的介紹,相信讀者對於將網頁轉換為 PDF 文件的過程有一定的了解,可以在實踐中不斷完善和優化。
以上是nodejs 轉pdf的詳細內容。更多資訊請關注PHP中文網其他相關文章!