C# Naming Conventions (How It Works For Developers)
在當今的數位世界中,能夠將網頁或HTML文件轉換為PDF檔案是非常重要的。 這對於生成報告、建立發票或僅僅是以更有呈現效果的格式分享資訊來說都很有用。 在這篇部落格文章中,我們將探討如何使用Node.js和Puppeteer(由Google開發的開源程式庫)將HTML頁面轉換成PDF。
Puppeteer介紹
Puppeteer是一個強大的Node.js程式庫,允許開發者控制無頭瀏覽器,主要是Google Chrome或Chromium,並執行各種操作,如網頁抓取、截屏和生成PDF。 Puppeteer提供廣泛的API來與瀏覽器互動,使其成為將HTML轉換為PDF的絕佳選擇。
為什麼選擇Puppeteer?
- 易於使用:Puppeteer 提供了一個簡單易用的API,將操作無頭瀏覽器的複雜性抽象出來。
- 功能強大:Puppeteer提供廣泛的功能來操作網頁和與瀏覽器元素互動。
- 可擴展:透過Puppeteer,您可以輕鬆地透過平行運行多個瀏覽器實例來擴展您的PDF生成過程。
設定您的Node.js專案
在開始之前,您需要設置一個新的Node.js專案。 請按照以下步驟開始:
- 如果尚未安裝Node.js,請從 Node.js網站 下載並安裝。
- 建立一個新的資料夾用於您的專案,並使用Visual Studio Code或任何特定的編輯器打開它。
-
執行
package.json文件。 按照提示填寫所需的資訊。
-
透過運行
npm install puppeteer安裝Puppeteer。
現在我們已經設置好專案,讓我們開始進入程式碼部分。
載入HTML模板並轉換為PDF文件
要使用Puppeteer將HTML模板轉換為PDF文件,請按照以下步驟:
在資料夾中建立一個名為"HTML To PDF.js"的文件。
導入Puppeteer和fs
const puppeteer = require('puppeteer');
const fs = require('fs');
程式碼從導入兩個重要的程式庫開始:fs,這是Node.js內建的處理文件系統操作的模組。 Puppeteer允許您自動化廣泛的基於網路的任務,包括渲染HTML、截取螢幕截圖和生成PDF文件。
定義exportWebsiteAsPdf函式
async function exportWebsiteAsPdf(html, outputPath) {
// Create a browser instance
const browser = await puppeteer.launch({
headless: true // Launches the browser in headless mode
});
// Create a new page
const page = await browser.newPage();
// Set the HTML content for the page, waiting for DOM content to load
await page.setContent(html, { waitUntil: 'domcontentloaded' });
// To reflect CSS used for screens instead of print
await page.emulateMediaType('screen');
// Download the PDF
const PDF = await page.pdf({
path: outputPath,
margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
printBackground: true,
format: 'A4',
});
// Close the browser instance
await browser.close();
return PDF;
}
exportWebsiteAsPdf函式作為我們程式碼片段的核心。 這個非同步函式接受outputPath作為輸入參數並返回PDF文件。函式執行以下步驟:
- 使用Puppeteer啟動一個新的無頭瀏覽器實例。
- 建立一個新的瀏覽器頁面。
- 將提供的
html字串設置為頁面內容,並等待DOM內容載入。 - 模擬'screen'媒體型別以應用用於螢幕的CSS而不是特定於列印的樣式。
- 從載入的HTML內容生成PDF文件,指定邊距、背景列印和格式(A4)。
- 關閉瀏覽器實例。
- 返回生成的PDF文件。
使用exportWebsiteAsPdf函式
// Usage example
// Get HTML content from HTML file
const html = fs.readFileSync('test.html', 'utf-8');
// Convert the HTML content into a PDF and save it to the specified path
exportWebsiteAsPdf(html, 'result.pdf').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
程式碼的最後部分展示了如何使用exportWebsiteAsPdf函式。 我們執行以下步驟:
- 使用
readFileSync方法從HTML文件讀取HTML內容。 - 使用載入的
exportWebsiteAsPdf函式。 - 使用
.then區塊處理成功的PDF建立,並將成功訊息記錄到控制台。 - 使用
.catch區塊來管理在HTML到PDF轉換過程中發生的任何錯誤,並將錯誤訊息記錄到控制台。
這段程式碼片段提供了一個完整的例子,說明如何使用Node.js和Puppeteer將HTML模板轉換為PDF文件。 通過實施此解決方案,您可以有效地生成高品質PDF,滿足各種應用和使用者的需求。

將URL轉換為PDF文件
除了轉換HTML模板外,Puppeteer還允許您直接將URL轉換為PDF文件。
導入Puppeteer
const puppeteer = require('puppeteer');
程式碼從導入Puppeteer程式庫開始,這是一個用於控制無頭瀏覽器如Chrome和Chromium的強大工具。 Puppeteer允許您自動化多種基於網頁的任務,包括渲染HTML程式碼、截取螢幕截圖,以及在我們的案例中,生成PDF文件。
定義exportWebsiteAsPdf函式
async function exportWebsiteAsPdf(websiteUrl, outputPath) {
// Create a browser instance
const browser = await puppeteer.launch({
headless: true // Launches the browser in headless mode
});
// Create a new page
const page = await browser.newPage();
// Open the URL in the current page
await page.goto(websiteUrl, { waitUntil: 'networkidle0' });
// To reflect CSS used for screens instead of print
await page.emulateMediaType('screen');
// Download the PDF
const PDF = await page.pdf({
path: outputPath,
margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
printBackground: true,
format: 'A4',
});
// Close the browser instance
await browser.close();
return PDF;
}
exportWebsiteAsPdf函式是我們程式碼片段的核心。 這些非同步函式接受outputPath作為其輸入參數並返回PDF文件。函式執行以下步驟:
- 使用Puppeteer啟動一個新的無頭瀏覽器實例。
- 建立一個新的瀏覽器頁面。
- 瀏覽到提供的
waitUntil選項等待網路空閒。 - 模擬'screen'媒體型別以確保應用用於螢幕的CSS而不是特定於列印的樣式。
- 使用指定的邊距、背景列印和格式(A4)將載入的網頁轉換為PDF文件。
- 關閉瀏覽器實例。
- 返回生成的PDF文件。
使用exportWebsiteAsPdf函式
// Usage example
// Convert the URL content into a PDF and save it to the specified path
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
程式碼的最後部分演示了如何使用exportWebsiteAsPdf函式。 我們執行以下步驟:
- 使用期望的
exportWebsiteAsPdf函式。 - 使用
then區塊來處理成功的PDF建立。 在此區塊中,我們將成功訊息記錄到控制台。 - 使用
catch區塊來處理在網站到PDF轉換過程中發生的任何錯誤。 如果發生錯誤,我們將錯誤資訊記錄到控制台。
透過將此程式碼片段整合到您的專案中,您可以輕鬆地使用Node.js和Puppeteer將URL轉換為高質量PDF文件。

最佳HTML轉PDF程式庫為C#開發者
探索IronPDF是一個用於生成、編輯和從PDF文件中提取內容的熱門.NET程式庫。 它提供了一個簡單而高效的解決方案,用於從HTML、文字、圖像和現有PDF文件建立PDF。 IronPDF支援.NET Core、.NET Framework和.NET 5.0+專案,使其成為一個適用於各種應用的多樣選擇。
IronPDF的主要功能
使用IronPDF進行HTML到PDF轉換:IronPDF允許您將HTML內容,包括CSS,轉換為PDF文件。 這一功能使您可以從網頁或HTML模板建立精確的PDF文件。
URL渲染:IronPDF可以使用URL直接從伺服器獲取網頁,並將它們轉換為PDF文件,使存檔網頁內容或從動態網頁生成報告變得簡單。
文字、圖像和PDF合併:IronPDF允許您合併文字、圖像和現有PDF文件到一個單一的PDF文件中。 此功能對於建立多來源內容的複雜文件特別有用。
PDF操作:IronPDF提供了編輯現有PDF文件的工具,如新增或移除頁面、修改元資料,甚至從PDF文件中提取文字和圖像。
結論
總之,生成和操作PDF文件是許多應用中的常見需求,擁有合適的工具至關重要。 本文中提供的解決方案,例如使用Node.js與Puppeteer或.NET與IronPDF,提供了強大而高效的方法來將HTML內容和URL轉換為專業、高品質的PDF文件。
特別是IronPDF因其廣泛的功能集而脫穎而出,使其成為.NET開發者的首選。 IronPDF提供免費試用,讓您探索其功能。
使用者還可以受益於Iron Suite套餐,包括五個專業的.NET程式庫,包括IronXL,IronPDF,IronOCR等。




