跳至頁尾內容
NODE 說明

JsdomNPM(開發者的使用方法)

當JSDOM和IronPDF在Node.js中結合時,程式員可以使用一個龐大的工具組來建立和修改PDF文件。 一個名為JSDOM的W3C DOM純JavaScript實現可以使在伺服器端操作HTML和XML文件,類似於在瀏覽器中可以做到的操作。 相反,IronPDF使用簡單的Node.js API使得從HTML內容建立高品質PDF更加容易。

結合JSDOM和IronPDF,使開發人員能夠輕鬆將網頁轉換為PDF,修改現有的PDF,並即時從HTML模板建立PDF文件。 這種組合是需要強大PDF建立能力的項目的理想選擇,因為它不僅保證了符合現代化網路技術,還加快了文件生成操作。

什麼是JSDOM NPM?

JSDOM NPM (Node 套件管理器) 是一個 JavaScript 程式庫,它使您可以使用Node.js來解析和處理HTML文件。 它在Node.js中提供了一個類似於瀏覽器的環境,並支持W3C DOM(文件物件模型)。 因此,您可以程式化地操作HTML和XML文件的特性和內容。 您甚至可以模擬點擊和表單提交等操作。

JSDOM NPM (如何為開發人員工作): 圖 1

JSDOM對於建立基於HTML的報告、測試和驗證網站、以及網路爬取等活動非常有用。 當在伺服器端環境中處理HTML頁面時,標準瀏覽器功能不可用,它幫助開發人員。 JSDOM NPM套件通過在Node.js應用程式中處理HTML操作和交互,彌合了客戶端瀏覽器功能和伺服器端JavaScript之間的鴻溝。

許多強大的網路功能實現下的JSDOM在Node.js中對於處理伺服器端環境的HTML和XML文件的開發人員是一個有用的工具。 JSDOM的突出特性如下:

W3C DOM 實現

JSDOM提供了許多W3C DOM和HTML規範的全面JavaScript實現。 這使您可以使用知名的DOM API來程式化地操作HTML和XML文件。

類瀏覽器環境

因為JSDOM在Node.js中模擬了瀏覽器環境,您可以像在瀏覽器中執行JavaScript一樣操作HTML頁面。 這包括處理文件物件模型、管理事件、執行腳本、存取和更改項目。

對標準的支持

支持現代網路標準,包括HTML5、CSS3以及最新的JavaScript功能。 這保證了與大多數網路內容的相容性,使得可以精確地操作和解析複雜的頁面。

解析和序列化

JSDOM可以將HTML字串解析成DOM結構,並將DOM節點序列化回HTML字串。 這是為了允許在頁面內執行腳本,並使之能夠從網頁輸出更新的HTML。

可定制配置

JSDOM可以配置以模仿許多瀏覽器相關的功能,包括處理外部資源(如載入外部腳本和執行外部腳本或樣式表)、在不同JavaScript引擎間切換(如V8或SpiderMonkey)等。

與測試框架的整合

JSDOM是書寫單元測試和整合測試的流行工具,包括在測試框架如Jest和Mocha中的DOM操作。 它使得可以在不需要完整瀏覽器環境的情況下進行網路應用無頭測試。

可及性和相容性

它適合需要遵守可及性標準的應用程式,因為它具有如支持螢幕閱讀器和ARIAl屬性的相容性。

Node.js生態系統整合

JSDOM與其他程式庫以及更大的Node.js生態系統協作良好。 例如,它可以與像Puppeteer的套件結合進行更複雜的網路爬蟲和自動化活動,或與Cheerio一起進行高效的HTML解析。

建立和配置JSDOM Node.js

在Node.js應用程式中可以按照以下步驟構建和配置JSDOM:

安裝JSDOM

首先,確保您的計算機上安裝了npm和Node.js。 npm可以用來安裝JSDOM:

npm install jsdom
npm install jsdom
SHELL

基本JSDOM用法

這是一個設置JSDOM環境並處理HTML文件的簡單範例:

const { JSDOM } = require('jsdom');

// Example HTML content
const htmlContent = `
<!DOCTYPE html>
<html>
<head>
  <title>JSDOM Example</title>
</head>
<body>
  <div id="content">
    <p>Hello, JSDOM!</p>
  </div>
</body>
</html>
`;

// Create a JSDOM instance
const dom = new JSDOM(htmlContent);

// Access and manipulate the DOM
const document = dom.window.document;
const contentDiv = document.getElementById('content');
contentDiv.innerHTML = '<p>Hello, modified JSDOM!</p>';

// Serialize the modified DOM back to HTML
const modifiedHtml = dom.serialize();
console.log(modifiedHtml);
const { JSDOM } = require('jsdom');

// Example HTML content
const htmlContent = `
<!DOCTYPE html>
<html>
<head>
  <title>JSDOM Example</title>
</head>
<body>
  <div id="content">
    <p>Hello, JSDOM!</p>
  </div>
</body>
</html>
`;

// Create a JSDOM instance
const dom = new JSDOM(htmlContent);

// Access and manipulate the DOM
const document = dom.window.document;
const contentDiv = document.getElementById('content');
contentDiv.innerHTML = '<p>Hello, modified JSDOM!</p>';

// Serialize the modified DOM back to HTML
const modifiedHtml = dom.serialize();
console.log(modifiedHtml);
JAVASCRIPT

JSDOM NPM (如何為開發人員工作): 圖 2

配置選項

JSDOM構造器接受可以提供來自定義其功能不同部分的選項。 這是一些典型的設置選擇:

它通過JSDOM物件API控制如何載入外部資源中的腳本和樣式表。 決定解析的HTML中脚本是否應由JSDOM執行。 允許在JSDOM內執行的腳本捕獲其控制台輸出。 模仿瀏覽器的視覺環境,這可能會影響幾個CSS和佈局計算。

這是一個使用選項設置JSDOM程式碼的例子。

const { JSDOM } = require('jsdom');

const htmlContent = '<!DOCTYPE html><html><body><p>Hello, JSDOM!</p></body></html>';

const options = {
  resources: 'usable', // Load external resources (e.g., scripts, stylesheets)
  runScripts: 'dangerously', // Allow scripts to run
};

const dom = new JSDOM(htmlContent, options);

// Access the document and window objects
const document = dom.window.document;
const window = dom.window;

// Manipulate the DOM or interact with the window object here
console.log(document.documentElement.outerHTML); // Output the modified HTML
const { JSDOM } = require('jsdom');

const htmlContent = '<!DOCTYPE html><html><body><p>Hello, JSDOM!</p></body></html>';

const options = {
  resources: 'usable', // Load external resources (e.g., scripts, stylesheets)
  runScripts: 'dangerously', // Allow scripts to run
};

const dom = new JSDOM(htmlContent, options);

// Access the document and window objects
const document = dom.window.document;
const window = dom.window;

// Manipulate the DOM or interact with the window object here
console.log(document.documentElement.outerHTML); // Output the modified HTML
JAVASCRIPT

高級用法

在更複雜的情況下,例如將測試程式碼與測試框架連接或者模擬使用者交互,JSDOM也可以應用。 這裡有一個使用JSDOM和Jest進行測試的例子:

const { JSDOM } = require('jsdom');

test('modifying DOM with JSDOM', () => {
  const dom = new JSDOM('<!DOCTYPE html><html><body><p>Hello, JSDOM!</p></body></html>');
  const document = dom.window.document;
  const contentParagraph = document.querySelector('p');

  // Assert initial content
  expect(contentParagraph.textContent).toBe('Hello, JSDOM!');

  // Modify content
  contentParagraph.textContent = 'Hello, modified JSDOM!';

  // Assert modified content
  expect(contentParagraph.textContent).toBe('Hello, modified JSDOM!');
});
const { JSDOM } = require('jsdom');

test('modifying DOM with JSDOM', () => {
  const dom = new JSDOM('<!DOCTYPE html><html><body><p>Hello, JSDOM!</p></body></html>');
  const document = dom.window.document;
  const contentParagraph = document.querySelector('p');

  // Assert initial content
  expect(contentParagraph.textContent).toBe('Hello, JSDOM!');

  // Modify content
  contentParagraph.textContent = 'Hello, modified JSDOM!';

  // Assert modified content
  expect(contentParagraph.textContent).toBe('Hello, modified JSDOM!');
});
JAVASCRIPT

快速入門

在Node.js中運行IronPDF和JSDOM需要結合這些庫來將HTML資訊轉換為PDF文件。 JSDOM使您可以使用編程處理HTML文件,而IronPDF使得將HTML轉換為PDF更容易。 這裡有一本入門手冊。

什麼是IronPDF for Node.js?

IronPDF for Node.js 從HTML文字生成高品質的PDF文件。 在保留原始網頁內容完整性的同時,它使HTML、CSS和JavaScript轉換為完全格式化的PDF的過程更易操作。 需要生成動態、可列印文件(如報告、發票和證書)的網頁應用程式可能發現這個工具特別有用。

IronPDF提供的許多功能包括可調頁面設置、頁眉和頁腳,以及嵌入圖片和字體的能力。 為了確保生成的PDF符合設計,它允許複雜的佈局和樣式。 此外,IronPDF會在HTML內執行JavaScript,能夠精確地渲染動態和互動式內容。

JSDOM NPM (如何為開發人員工作): 圖 3

IronPDF的功能

從HTML生成PDF

將JavaScript、HTML和CSS轉換為PDF。 支持媒體查詢和響應式設計這兩種當代 Web 標準。 適合使用 HTML 和 CSS 動態修飾 PDF 文件、報告和帳單。

PDF編輯

可以在現有PDF中新增文字、圖片和其他內容,或者也可以從這些PDF文件中提取文字和圖片。 將多個PDF合併為一個文件。將PDF文件拆分為多個獨立文件。 包括水印、註釋、頁眉和頁腳。

效能和可靠性

在工業環境下,高效能和可靠性是理想的設計特徵。 IronPDF輕鬆管理大型文件集。

安裝IronPDF

安裝IronPDF包以獲取在node項目中處理PDF所需的工具。

 npm i @ironsoftware/ironpdf

使用JSDOM和IronPDF將HTML轉換為PDF

使HTML材料準備好轉換成PDF。 例如:


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example Document</title>
  <style>
    body {
      font-family: Arial, sans-serif;
    }
    .content {
      margin: 20px;
    }
  </style>
</head>
<body>
  <div class="content">
    <h1>Hello, JSDOM with IronPDF!</h1>
    <p>This is a sample HTML document converted to PDF using JSDOM and IronPDF.</p>
  </div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example Document</title>
  <style>
    body {
      font-family: Arial, sans-serif;
    }
    .content {
      margin: 20px;
    }
  </style>
</head>
<body>
  <div class="content">
    <h1>Hello, JSDOM with IronPDF!</h1>
    <p>This is a sample HTML document converted to PDF using JSDOM and IronPDF.</p>
  </div>
</body>
</html>
HTML

建立一個名為convertToPdf.js的Node.js腳本,使用JSDOM解析HTML內容並使用IronPDF建立PDF。

const { JSDOM } = require('jsdom');
const IronPdf = require("@ironsoftware/ironpdf");
const fs = require('fs');

// Configure IronPDF with the license key (if applicable)
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' });

// Load the HTML content from the file
const htmlContent = fs.readFileSync('example.html', 'utf8');

// Create a JSDOM instance and parse the HTML
const dom = new JSDOM(htmlContent);
const jdocument = dom.window.document;

// Convert the HTML to PDF
IronPdf.PdfDocument.fromHtml(jdocument.documentElement.outerHTML).then((pdfres) => {
  const filePath = `${Date.now()}.pdf`;
  pdfres.saveAs(filePath).then(() => {
    console.log('PDF saved successfully!');
  }).catch((e) => {
    console.log(e);
  });
});
const { JSDOM } = require('jsdom');
const IronPdf = require("@ironsoftware/ironpdf");
const fs = require('fs');

// Configure IronPDF with the license key (if applicable)
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' });

// Load the HTML content from the file
const htmlContent = fs.readFileSync('example.html', 'utf8');

// Create a JSDOM instance and parse the HTML
const dom = new JSDOM(htmlContent);
const jdocument = dom.window.document;

// Convert the HTML to PDF
IronPdf.PdfDocument.fromHtml(jdocument.documentElement.outerHTML).then((pdfres) => {
  const filePath = `${Date.now()}.pdf`;
  pdfres.saveAs(filePath).then(() => {
    console.log('PDF saved successfully!');
  }).catch((e) => {
    console.log(e);
  });
});
JAVASCRIPT

JSDOM NPM (如何為開發人員工作): 圖 4

從資料庫、文件或動態建立的內容中載入HTML內容。 要從解析的HTML內容中建立PDF文件,請使用IronPDF。 HTML字串由IronPDF的 RenderHtmlAsPdf 功能接受,然後提供包含PDF資料的Promise。 使用Node.js的文件系統模塊 (fs),IronPDF將PDF文件建立為緩衝區 (pdfBuffer),可以儲存到文件中。錯誤處理保證了在PDF建立過程中遇到問題(如HTML損壞或網路障礙)時的穩定性。

JSDOM NPM (如何為開發人員工作): 圖 5

結論

對於編程地從HTML資訊建立高質量PDF文件,JSDOM提供了一個可靠的選擇。 通過模擬瀏覽器環境解析和操作HTML頁面,JSDOM使得開發人員可以與DOM元素進行互動並動態編輯資訊。 這一功能對於資料提取、動態報告生成、和網路爬取等工作至關重要。

IronPDF對於將HTML文字轉換成PDF擁有強大的功能,使您能夠精確控制佈局、分頁、頁眉、頁腳及其他PDF特定的功能,是JSDOM的極佳補充。 這使得將複雜的HTML結構從Node.js應用中直接轉換為可列印、準備好的PDF文件變得更加容易。

結合JSDOM和IronPDF,開發人員可以自動從HTML模板或動態生成的資訊中建立PDF文件。 這使得這些文件在生成報告、證書、發票等的多種用途中有用。 這種整合通過利用兩個程式庫的優勢來提高生產力並保持文件的完整性,能夠有效滿足Node.js生態系統中以文件為中心的應用的特殊需求。

IronPDF和Iron Software使您能夠擴展.NET開發工具包的功能,包括OCR,條碼掃描,PDF建立,Excel整合及其他特性。 IronPDF 結合 Iron Software的 高度可配置系統和套件,其核心支持提供開發人員額外的網路應用和功能,以及更高效的開發,只需 $999 即可獲得基本版本。

當授權選項清晰並針對專案量身定制時,程式員可以更輕鬆地選擇最佳模型。 這些功能幫助程式員以簡單、有效和良好整合的方式解決各種問題。

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

在Iron Software,Darrius喜歡創造新事物並簡化複雜的概念,使其更易於理解。作為我們的常駐開發人員之一,他還志願教學,將他的專業知識傳授給下一代。

對Darrius來說,他的工作是有意義的,因為它有價值且對社會有真正的影響。

Iron 支援團隊

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