首頁 > web前端 > 前端問答 > Node.js怎麼將Html轉為PDF(指南)

Node.js怎麼將Html轉為PDF(指南)

PHPz
發布: 2023-04-17 16:04:33
原創
1619 人瀏覽過

隨著網路的發展,越來越多的網站需要提供PDF格式的文件下載,以方便使用者離線閱讀或列印。而利用Node.js來實現HTML到PDF的轉換成為了比較流行的方案。

在本文中,我們將介紹如何使用Node.js將HTML轉換為PDF,同時分析相關技術以及注意事項。

環境準備:

在開始轉換HTML到PDF之前,需要確保在本機環境中已經安裝了Node.js以及相關依賴。本文所使用的依賴包括:html-pdf、ejs、express等。

安裝html-pdf

html-pdf是一個開源的Node.js套件,可以透過npm安裝:

npm install -g html-pdf
登入後複製

安裝express

express是一個基於Node.js的Web應用程式開發框架,可以透過npm安裝:

npm install -g express
登入後複製

安裝ejs

ejs是一個高效的JavaScript模板引擎,可以透過npm安裝:

npm install -g ejs
登入後複製

創建一個簡單的Web應用:

接下來,我們創建一個簡單的Web應用程序,用來測試我們的HTML轉換成PDF的效果。

  1. 建立一個名為node-pdf的項目,並在該目錄下執行:
npm init
登入後複製
  1. #在node-pdf目錄下建立一個名為public的資料夾,用於存放靜態文件。
  2. 在public資料夾下,建立一個名為index.html的文件,用來展示需要轉換為PDF的HTML內容。內容如下:
<!doctype html>
<html>

<head>
  <title>HTML转PDF</title>
  <meta charset="utf-8">
</head>

<body>
  <h1>HTML转PDF</h1>
  <p>这是一段需要转换为PDF的HTML内容。</p>
</body>

</html>
登入後複製
  1. 在node-pdf目錄下,建立一個名為app.js的文件,用於建立Web應用程式。內容如下:
const express = require('express');
const app = express();
const ejs = require('ejs');
const path = require('path');

// 设置模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// 服务器首页
app.get('/', function(req, res) {
  res.render('index');
});

// 转换HTML为PDF并进行下载
app.get('/download', function(req, res) {
  const pdf = require('html-pdf');
  const html = ejs.render('<%- include(\&#39;../public/index.html\&#39;) %>', {});
  const options = { format: 'A4' };
  pdf.create(html, options).toStream(function(err, stream) {
    if (err) return res.send(err.message);
    res.setHeader('Content-disposition', 'attachment; filename=sample.pdf');
    res.setHeader('Content-type', 'application/pdf');
    stream.pipe(res);
  });
});

// 启动服务器
app.listen(3000, function() {
  console.log('App listening on port 3000!');
});
登入後複製

在上述程式碼中,我們定義了兩個路由:一個用於存取伺服器首頁(/),另一個用於將HTML轉換為PDF並進行下載(/download )。

其中,使用了ejs模板引擎來渲染public資料夾下的index.html文件,利用html-pdf對渲染後的HTML文件進行轉換,最終讓瀏覽器以下載方式保存PDF文件。

  1. 在node-pdf目錄下,建立一個名為views的資料夾,並在該資料夾下建立一個名為index.ejs的文件,用於設定Web應用程式的範本文件。內容如下:
<!doctype html>
<html>

<head>
  <title>HTML转PDF</title>
  <meta charset="utf-8">
</head>

<body>
  <h1>HTML转PDF</h1>
  <p>这是一段需要转换为PDF的HTML内容。</p>
  <a href="/download">下载PDF</a>
</body>

</html>
登入後複製
  1. 在node-pdf目錄下開啟命令列並執行以下命令來啟動應用程式:
node app.js
登入後複製
  1. 在瀏覽器中造訪http://localhost:3000/ 即可存取伺服器首頁,點選「下載PDF」即可將HTML檔案轉換為PDF並進行下載。

本文只是基於Node.js進行HTML轉PDF的簡單的引導,更多細節與功能可以參考html-pdf、ejs、express等相關文件資料。同時,在實際應用過程中也需要注意快取、HTML結構複雜度等因素,才能提升HTML轉PDF的效率與品質。

以上是Node.js怎麼將Html轉為PDF(指南)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板