跳過到頁腳內容
NODE 說明

fs extra npm(開發者的使用方法)

Node.js是一個強大的 JavaScript 執行環境,它透過提供高效且可擴展的應用程式開發環境,徹底改變了伺服器端程式設計。 在眾多可供開發者使用的 Node.js 軟體包中, fs-extraIronPDF因其完善的文件處理和 PDF 創建功能而脫穎而出。

fs-extra是 Node 原生fs模組的增強版本。 它提供了更友善的使用者 API 和用於檔案操作(如複製、移動和刪除)的附加方法。 支援 Promise 可以簡化非同步編程,確保流暢的檔案系統管理,並簡化JSON檔案的處理。

相反, IronPDF是一個功能強大的 PDF 庫,它允許程式設計師產生、修改和提取 PDF 文件中的內容。 它可用於從 HTML 或未格式化的文字建立 PDF 文件合併多個 PDF以及向 PDF添加頁首、頁尾、浮水印和其他自訂項目。 這使其成為快速建立發票、報告和其他文件的寶貴工具。

透過整合fs-extraIronPDF ,開發人員可以在其 Node.js 應用程式中建立複雜的檔案管理系統並產生專業品質的 PDF。 這種組合保證了程式能夠有效地處理複雜的文件和文件處理任務,同時提高生產效率。

什麼是 fs-extra npm?

fs-extra套件是一個靈活的 Node.js 實用程序,它擴展了內建的fs (檔案系統)模組,提供了更多功能來簡化日常檔案操作。 它提供了諸如fs.copyfs.movefs.remove之類的功能,使複製、移動和刪除檔案和目錄等任務變得更加容易。 此外,fs-extra 還附帶用於讀取和寫入 JSON 檔案( fs.readJsonfs.writeJson )、檢查目錄或檔案是否存在( fs.ensureDirfs.ensureFile )以及執行其他方便操作的工具。 它支援 Promise,允許使用 async/await 語法來更方便地管理非同步程式設計。 所有 fs 方法都會傳回 promise,fs-extra 也包含同步方法。

! fs extra npm(開發者使用方法):圖 1 - Node.js:fs-extra

fs-extra 的特性

fs-extra 是在原生 fs 模組的功能基礎上擴充而來的,是 Node.js 的一個改良型檔案系統模組。 它深受開發人員的歡迎,提供了一系列強大而實用的文件和目錄管理技術。 與原有的 fs 模組相比,fs-extra 除了為標準 fs 方法添加了 promise 支援之外,還具有以下特性:

增強的文件操作

-複製fs.copy(src, dest) :將目錄和檔案(包括巢狀內容)從來源複製到目標。 -移動fs.move(src, dest) :傳輸資料夾和文件,並提供重新命名選項。 -刪除fs.remove(path) :遞歸刪除資料夾與檔案。

目錄操作

-確保目錄fs.ensureDir(path) :驗證目錄是否已存在; 否則,建立目錄。 -空白目錄fs.emptyDir(path) :刪除目錄的內容,但保留目錄本身。 -確保檔案fs.ensureFile(path) :驗證檔案是否已存在; 否則,創建文件。

JSON 處理

-讀取 JSONfs.readJson(path) :讀取 JSON 檔案並解析其內容。 -寫入 JSONfs.writeJson(path, data) :將 JavaScript 物件以 JSON 格式寫入檔案。

承諾支持

-基於 Promise 的 API :大多數方法傳回 Promise,使得使用 async/await 語法編寫非同步程式碼更加容易。

向後相容性

-完全支援 fs 模組:fs-extra 包含了原生 fs 模組的所有標準方法,因此可以作為直接替換,並具有完全向後相容性。

便利方法

-輸出檔案fs.outputFile(path, data) :如果目錄不存在則建立目錄並將資料寫入檔案。 -輸出 JSONfs.outputJson(path, data) :在將 JSON 中的 JavaScript 物件寫入檔案之前,如果資料夾尚不存在,則建立資料夾。 -讀取檔案fs.readFile(path) :讀取檔案的內容。 -寫入檔案fs.writeFile(path, data) :將資料寫入檔案。 -路徑存在性fs.pathExists(path) :檢查給定路徑下是否存在檔案或目錄。

建立符號連結

-確保符號連結fs.ensureSymlink(srcpath, dstpath) : 驗證是否存在符號鏈接,如果不存在,則建立符號連結。

使用 fs-extra 建立和配置 Node.js 項目

在Node.js專案中使用fs-extra庫,請如下建立和配置:

設定專案

首先為你的專案建立一個新目錄,然後使用 npm 啟動一個全新的 Node.js 專案( npm init -y )。 這樣就建構了應用程式的基本框架。

安裝 fs-extra

使用 npm 安裝 fs-extra 函式庫:

npm install fs-extra
npm install fs-extra
SHELL

使用 fs-extra

為了示範 fs-extra 的用法,請在您喜歡的文字編輯器中開啟index.js ,並新增以下範例程式碼。

// Import the fs-extra module
const fs = require('fs-extra');

// Asynchronous function to perform various file operations
async function performFileOperations() {
  try {
    // Ensure a directory exists; create it if it doesn't
    await fs.ensureDir('exampleDir');

    // Create a file and write some data to it
    await fs.outputFile('exampleDir/exampleFile.txt', 'Hello, world!');

    // Read the file's content
    const data = await fs.readFile('exampleDir/exampleFile.txt', 'utf-8');
    console.log('File Content:', data);

    // Recursively copy the file
    await fs.copy('exampleDir/exampleFile.txt', 'exampleDir/copyOfExampleFile.txt');

    // Move the file to a new location
    await fs.move('exampleDir/copyOfExampleFile.txt', 'exampleDir/movedExampleFile.txt');

    // Remove the file
    await fs.remove('exampleDir/movedExampleFile.txt');

    // Ensure a file exists; create it if it doesn't
    await fs.ensureFile('exampleDir/newFile.txt');

    // Write JSON data to a file
    const jsonData = { name: 'John Doe', age: 30 };
    await fs.writeJson('exampleDir/data.json', jsonData);

    // Read JSON data from a file
    const jsonFileContent = await fs.readJson('exampleDir/data.json');
    console.log('JSON File Content:', jsonFileContent);
  } catch (err) {
    console.error('Error during file operations:', err);
  }
}

// Execute the file operations
performFileOperations();
// Import the fs-extra module
const fs = require('fs-extra');

// Asynchronous function to perform various file operations
async function performFileOperations() {
  try {
    // Ensure a directory exists; create it if it doesn't
    await fs.ensureDir('exampleDir');

    // Create a file and write some data to it
    await fs.outputFile('exampleDir/exampleFile.txt', 'Hello, world!');

    // Read the file's content
    const data = await fs.readFile('exampleDir/exampleFile.txt', 'utf-8');
    console.log('File Content:', data);

    // Recursively copy the file
    await fs.copy('exampleDir/exampleFile.txt', 'exampleDir/copyOfExampleFile.txt');

    // Move the file to a new location
    await fs.move('exampleDir/copyOfExampleFile.txt', 'exampleDir/movedExampleFile.txt');

    // Remove the file
    await fs.remove('exampleDir/movedExampleFile.txt');

    // Ensure a file exists; create it if it doesn't
    await fs.ensureFile('exampleDir/newFile.txt');

    // Write JSON data to a file
    const jsonData = { name: 'John Doe', age: 30 };
    await fs.writeJson('exampleDir/data.json', jsonData);

    // Read JSON data from a file
    const jsonFileContent = await fs.readJson('exampleDir/data.json');
    console.log('JSON File Content:', jsonFileContent);
  } catch (err) {
    console.error('Error during file operations:', err);
  }
}

// Execute the file operations
performFileOperations();
JAVASCRIPT

以上程式碼片段展示了改進後的 Node.js 檔案系統模組fs-extra庫的功能。 該腳本實作了一個名為performFileOperations 的非同步方法,在匯入 fs-extra後執行多個檔案操作。 它使用fs.ensureDir()方法,首先驗證是否存在名為"exampleDir"的目錄。 然後,使用fs.outputFile()方法,在該目錄中建立一個名為"exampleFile.txt"的文件,並將文字"Hello, world!"寫入其中。 腳本使用fs.readFile()讀取檔案內容並將其記錄到控制台。

控制台輸出

! fs extra npm(開發者如何運作):圖 2 - 使用 fs-extra 函式庫進行檔案處理的 Node.js 應用程式的控制台輸出。

此外,它還使用遞歸函數(例如fs.copy())將檔案複製到"copyOfExampleFile.txt",然後使用fs.move()將此副本重新定位到"movedExampleFile.txt"。 然後,使用fs.remove()刪除已遷移的檔案。腳本使用`fs.ensureFile() 函數驗證newFile.txt是否存在,並**使用fs.writeJson() 將 JSON 物件寫入data.json` 檔案。最後,它使用fs.readJson()從檔案中讀取 JSON 資料並將其記錄到控制台。 這些過程中發生的錯誤會被捕獲並記錄下來。 然後,透過呼叫performFileOperations**函數依序執行這些操作,來示範 fs-extra 在 Node.js 中進行檔案和目錄管理的實用性和易用性。

輸出

! fs extra npm(開發者使用方法):圖 3 - 檔案總管輸出,顯示了使用 Node.js 應用程式中的 fs-extra 程式庫以程式設計方式建立的 exampleDir 目錄和文件

將 fs-extra 與 IronPDF 結合使用

透過將IronPDF用於可靠的 PDF 生成,將fs-extra用於改進檔案系統操作,從而為 Node.js 開發人員創建了一個強大的工具包。 本教學將向您展示如何使用 IronPDF 和 fs-extra 設定 Node.js 項目,並將包含範例程式碼來說明如何將它們一起使用。

什麼是 IronPDF?

IronPDF是一個功能強大的 Node.js 函式庫,旨在將 HTML 資料轉換為極高品質的 PDF 檔案。 它能加快 HTML、CSS 和其他 JavaScript 檔案轉換為格式正確的 PDF 的過程,而不會破壞原始網頁內容。 這對於需要產生動態、可列印文件(如發票、憑證和報告)的 Web 應用程式非常有用。

IronPDF具有多種功能,包括可自訂的頁面設定、頁首、頁尾以及新增字體和圖像的選項。 它可以管理複雜的樣式和佈局,以確保每個測試 PDF 輸出都符合規格。 此外,IronPDF控制 HTML 中的 JavaScript 執行,從而實現精確的動態互動內容渲染。

! fs extra npm(開發者使用方法):圖 4 - IronPDF for Node.js:Node.js PDF 函式庫

IronPDF 的特點

從 HTML 產生 PDF

將 HTML、CSS 及 JavaScript 轉換為 PDF。 支援媒體查詢和響應式設計等現代網路標準,方便使用 HTML 和 CSS 動態裝飾 PDF 文件、報告和帳單。

PDF 編輯

  • 在現有 PDF 文件中添加文字、圖像和其他材料。
  • 從PDF文件中提取文字和圖像。 將多個PDF文件合併成一個文件。 將PDF文件拆分成多個不同的文件。
  • 新增頁首、頁尾、註解和浮水印。

性能和可靠性

設計特點包括高性能和高可靠性,適用於工業環境。 它可以輕鬆處理大型文件集。

安裝 IronPDF

若要取得在 Node.js 專案中處理 PDF 所需的工具,請安裝IronPDF 套件

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

將 fs-extra npm 與 IronPDF 集成

為了示範如何將 fs-extra 和 IronPDF 結合使用,請在您喜歡的文字編輯器中開啟index.js ,並新增以下程式碼:

// Import fs-extra and IronPDF libraries
const fs = require('fs-extra');
const IronPdf = require("@ironsoftware/ironpdf");

const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' }); // Set your IronPDF license key here

// Asynchronous function to create and manage PDF files
async function createAndManagePDF() {
  try {
    // Ensure the parent directory exists
    const outputDir = 'output';
    await fs.ensureDir(outputDir);

    // Define the HTML content for the PDF
    const htmlContent = `
      <html>
        <head>
          <title>Sample PDF</title>
        </head>
        <body>
          <h1>Hello, world!</h1>
          <p>This is a sample PDF generated using IronPDF and fs-extra.</p>
        </body>
      </html>
    `;

    // Initialize IronPDF and generate a PDF from the HTML content
    let pdf = await document.fromHtml(htmlContent);
    const pdfPath = `${outputDir}/sample.pdf`;
    await pdf.saveAs(pdfPath);
    console.log('PDF generated successfully:', pdfPath);

    // Read the PDF file and check its size
    const pdfData = await fs.readFile(pdfPath);
    console.log('PDF file size:', pdfData.length);

    // Copy the PDF file
    const copiedPdfPath = `${outputDir}/copied_sample.pdf`;
    await fs.copy(pdfPath, copiedPdfPath);
    console.log('PDF copied successfully:', copiedPdfPath);

    // Move the copied PDF file
    const movedPdfPath = `${outputDir}/moved_sample.pdf`;
    await fs.move(copiedPdfPath, movedPdfPath);
    console.log('PDF moved successfully:', movedPdfPath);

    // Remove the original PDF file
    await fs.remove(pdfPath);
    console.log('Original PDF removed successfully:', pdfPath);
  } catch (err) {
    console.error('Error during PDF creation and management:', err);
  }
}

// Execute the PDF creation and management operations
createAndManagePDF();
// Import fs-extra and IronPDF libraries
const fs = require('fs-extra');
const IronPdf = require("@ironsoftware/ironpdf");

const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' }); // Set your IronPDF license key here

// Asynchronous function to create and manage PDF files
async function createAndManagePDF() {
  try {
    // Ensure the parent directory exists
    const outputDir = 'output';
    await fs.ensureDir(outputDir);

    // Define the HTML content for the PDF
    const htmlContent = `
      <html>
        <head>
          <title>Sample PDF</title>
        </head>
        <body>
          <h1>Hello, world!</h1>
          <p>This is a sample PDF generated using IronPDF and fs-extra.</p>
        </body>
      </html>
    `;

    // Initialize IronPDF and generate a PDF from the HTML content
    let pdf = await document.fromHtml(htmlContent);
    const pdfPath = `${outputDir}/sample.pdf`;
    await pdf.saveAs(pdfPath);
    console.log('PDF generated successfully:', pdfPath);

    // Read the PDF file and check its size
    const pdfData = await fs.readFile(pdfPath);
    console.log('PDF file size:', pdfData.length);

    // Copy the PDF file
    const copiedPdfPath = `${outputDir}/copied_sample.pdf`;
    await fs.copy(pdfPath, copiedPdfPath);
    console.log('PDF copied successfully:', copiedPdfPath);

    // Move the copied PDF file
    const movedPdfPath = `${outputDir}/moved_sample.pdf`;
    await fs.move(copiedPdfPath, movedPdfPath);
    console.log('PDF moved successfully:', movedPdfPath);

    // Remove the original PDF file
    await fs.remove(pdfPath);
    console.log('Original PDF removed successfully:', pdfPath);
  } catch (err) {
    console.error('Error during PDF creation and management:', err);
  }
}

// Execute the PDF creation and management operations
createAndManagePDF();
JAVASCRIPT

上述 Node.js 程式碼範例結合了IronPDF (用於建立和管理 PDF 檔案)和fs-extra (用於進階檔案系統操作)。 首先,使用fs.ensureDir()函數確保存在名為"output"的目錄。 目錄是目錄和檔案的層次化分組。 將要建立的 PDF 的結構由 HTML 內容定義,該 HTML 內容包含在htmlContent中。 它使用 IronPDF 的PdfDocument類,透過fromHtml()方法插入 HTML 內容,並使用saveAs()函數將產生的 PDF 儲存到"output/sample.pdf"。

輸出

![fs extra npm(開發者如何運作):圖 5 - 結合了 fs-extra 和 IronPDF 函式庫的 Node.js 應用程式的控制台輸出。 該程式使用 fs-extra 庫進行檔案和目錄處理,並使用 IronPDF 庫將 HTML 內容轉換為 PDF 文件。

然後使用fs-extra繼續進行檔案操作: fs.readFile()取得 PDF 的內容以追蹤其大小。 fs.copy ()將產生的"output/sample.pdf"複製到"output/copied_sample.pdf",然後fs.move()方法將此副本移至"output/moved_sample.pdf",最後刪除原始 PDF。 透過 try-catch 區塊進行錯誤處理,可以確保在執行 fs 方法或活動期間出現的任何問題都能正確捕獲並記錄。 總的來說,此配置示範如何使用 fs-extra 增強檔案操作,以及如何在 Node.js 應用程式中使用 IronPDF 輕鬆建立和操作 PDF。

輸出 PDF

! fs extra npm(開發者使用指南):圖 6 - 使用 IronPDF 和 fs-extra 產生的輸出 PDF:moved_sample.pdf

結論

最後, fs-extraIronPDF共同為 Node.js 應用程式中的檔案系統操作和 PDF 生成管理提供了一個可靠的解決方案。 fs-extra 透過改進的方法簡化了建立目錄、複製、移動和刪除檔案等任務,並為高效的檔案管理建立了強大的基礎。 同時,IronPDF 在文件建立和處理方面提供了靈活性,可以輕鬆地將 HTML 內容轉換為 PDF 文件。

這些程式庫結合起來,使開發人員能夠輕鬆創建動態應用程序,從而創建、管理和處理 PDF 文件。 fs-extraIronPDF的整合使開發人員能夠在 Node.js 環境中利用強大的功能來滿足各種文件處理需求,無論是建立發票、報告或動態文件。

透過IronPDFIron Software ,您可以擴展節點開發工具包,使其具備 OCR、條碼掃描、PDF 生成、Excel 互動以及其他眾多功能。 Iron Software提供高度可配置的系統和一系列社群支援的插件,使開發人員能夠更快地創建功能和 Web 應用程式。

IronPDF 提供詳細的文檔,許可選項從$799等方案開始,使開發人員能夠輕鬆地選擇最適合其專案需求的模式。 這些功能使開發人員能夠有效率、有效地解決各種問題。

來賓:Engage Elephant

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。