首頁  >  文章  >  web前端  >  nodejs用html轉成pdf

nodejs用html轉成pdf

WBOY
WBOY原創
2023-05-12 12:28:371419瀏覽

隨著網路技術的不斷發展,越來越多的應用程式需要將網頁內容轉換為 PDF 格式,以使其更易於分享和下載。在這個過程中,Node.js 可以作為一個強大的工具來實作將 HTML 文件轉換為 PDF 格式。這篇文章將介紹使用 Node.js 將 HTML 轉換為 PDF 的過程。

  1. 安裝必要的依賴項

在開始之前,您需要在系統中安裝以下必要的軟體包:

  • Node. js 開發環境
  • npm - Node.js 的套件管理器
  • wkhtmltopdf - 一個從網頁產生PDF 的工具

Wkhtmltopdf 是一個基於WebKit 引擎的命令行工具,它可以將html 文件轉換為pdf 文件,同時它還支援添加浮水印、頁眉頁腳等多種特性。

在Ubuntu 系統下,您可以透過以下命令進行wkhtmltopdf 的安裝:

sudo apt-get install wkhtmltopdf
  1. 安裝依賴項

接下來,您需要安裝pdfkit和fs 模組,這兩個模組可透過npm 套件管理器進行安裝。

在命令列輸入以下命令進行安裝:

npm install pdfkit
npm install fs
  1. 編寫程式碼

安裝完相關依賴項後,就可以開始編寫JavaScript 程式碼了。您可以建立一個名為「html-to-pdf.js」的文件,寫入以下程式碼:

const pdfkit = require('pdfkit');
const fs = require('fs');
const wkhtmltopdf = require('wkhtmltopdf');

// 生成 PDF
function generatePDF(html, options, callback) {
    // 创建文件流
    const inputStream = fs.createReadStream(html);

    // 调用 wkhtmltopdf
    wkhtmltopdf(inputStream, options, (error, stream) => {
        if (error) {
            callback(error);
        } else {
            callback(null, stream);
        }
    });
}

// 写 PDF
function writePDF(doc, path, callback) {
    const writeStream = fs.createWriteStream(path);

    writeStream.on('error', (error) => {
        callback(error);
    });

    doc.pipe(writeStream);

    doc.end();
}

// 创建 PDF
function createPDF(html, path, options, callback) {
    const doc = new pdfkit();

    generatePDF(html, options, (error, stream) => {
        if (error) {
            callback(error);
        } else {
            doc.on('pageAdded', () => {
                doc.image(stream, {
                    fit: [doc.page.width - 100, doc.page.height - 100],
                    align: 'center',
                    valign: 'center'
                });
            });

            doc.pipe(fs.createWriteStream(path));

            doc.end();

            callback(null, path);
        }
    });
}

// 导出模块
module.exports = {
    createPDF,
    writePDF,
    generatePDF
};

在該程式碼中,我們引入了pdfkit、fs 和wkhtmltopdf 模組,並編寫了三個函數:generatePDF、writePDF 和createPDF 。

generatePDF 函數的作用是將 HTML 檔案轉換為 PDF 格式。它需要傳遞三個參數:html、options 和 callback。

writePDF 函數的功能是將 PDF 文件寫入檔案系統中。它需要傳遞三個參數:doc、path 和 callback。

createPDF 函數則是整個流程的控制中心,它可以呼叫 generatePDF 和 writePDF 函數來完成 HTML 轉 PDF 的過程。

  1. 使用 Node.js 將 HTML 轉換為 PDF

現在,您已經完成了程式碼的編寫,可以開始使用 Node.js 將 HTML 轉換為 PDF。您可以在命令列中輸入以下命令:

node html-to-pdf.js

或者,您也可以在自己的專案中使用該模組:

const htmlToPdf = require('./html-to-pdf');

htmlToPdf.createPDF('test.html', 'test.pdf', {
   pageSize: 'letter',
   marginTop: '0mm',
   marginBottom: '0mm',
   marginLeft: '0mm',
   marginRight: '0mm'
}, (err, result) => {
   if (err) {
      console.error(err);
      return;
   }
   console.log('File saved to: ' + result);
});

在這個範例中,我們使用createPDF 函數來將test .html 轉換為test.pdf,同時設定了頁面大小和邊距。

  1. 總結

在這篇文章中,我們介紹如何使用Node.js 將HTML 轉換為PDF,具體步驟包括安裝依賴項、編寫程式碼、使用Node.js 進行轉換等。如果您需要處理大量的 HTML 轉換任務,那麼使用 Node.js 可以為您提供一個高效、靈活且可擴展的解決方案。

以上是nodejs用html轉成pdf的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn