跳至頁尾內容
.NET幫助

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專案。 請按照以下步驟開始:

  1. 如果尚未安裝Node.js,請從 Node.js網站 下載並安裝。
  2. 建立一個新的資料夾用於您的專案,並使用Visual Studio Code或任何特定的編輯器打開它。
  3. 執行package.json文件。 按照提示填寫所需的資訊。

    如何在Node.js中將HTML轉換為PDF:圖1

  4. 透過運行npm install puppeteer安裝Puppeteer。

    如何在Node.js中將HTML轉換為PDF:圖2

現在我們已經設置好專案,讓我們開始進入程式碼部分。

載入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文件。函式執行以下步驟:

  1. 使用Puppeteer啟動一個新的無頭瀏覽器實例。
  2. 建立一個新的瀏覽器頁面。
  3. 將提供的html字串設置為頁面內容,並等待DOM內容載入。
  4. 模擬'screen'媒體型別以應用用於螢幕的CSS而不是特定於列印的樣式。
  5. 從載入的HTML內容生成PDF文件,指定邊距、背景列印和格式(A4)。
  6. 關閉瀏覽器實例。
  7. 返回生成的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函式。 我們執行以下步驟:

  1. 使用readFileSync方法從HTML文件讀取HTML內容。
  2. 使用載入的exportWebsiteAsPdf函式。
  3. 使用.then區塊處理成功的PDF建立,並將成功訊息記錄到控制台。
  4. 使用.catch區塊來管理在HTML到PDF轉換過程中發生的任何錯誤,並將錯誤訊息記錄到控制台。

這段程式碼片段提供了一個完整的例子,說明如何使用Node.js和Puppeteer將HTML模板轉換為PDF文件。 通過實施此解決方案,您可以有效地生成高品質PDF,滿足各種應用和使用者的需求。

如何在Node.js中將HTML轉換為PDF:圖3

將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文件。函式執行以下步驟:

  1. 使用Puppeteer啟動一個新的無頭瀏覽器實例。
  2. 建立一個新的瀏覽器頁面。
  3. 瀏覽到提供的waitUntil選項等待網路空閒。
  4. 模擬'screen'媒體型別以確保應用用於螢幕的CSS而不是特定於列印的樣式。
  5. 使用指定的邊距、背景列印和格式(A4)將載入的網頁轉換為PDF文件。
  6. 關閉瀏覽器實例。
  7. 返回生成的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函式。 我們執行以下步驟:

  1. 使用期望的exportWebsiteAsPdf函式。
  2. 使用then區塊來處理成功的PDF建立。 在此區塊中,我們將成功訊息記錄到控制台。
  3. 使用catch區塊來處理在網站到PDF轉換過程中發生的任何錯誤。 如果發生錯誤,我們將錯誤資訊記錄到控制台。

透過將此程式碼片段整合到您的專案中,您可以輕鬆地使用Node.js和Puppeteer將URL轉換為高質量PDF文件。

如何在Node.js中將HTML轉換為PDF:圖4

最佳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程式庫,包括IronXLIronPDFIronOCR等。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話