HTML-PDF-Chrome 项目使用教程
项目目录结构及介绍
HTML-PDF-Chrome 项目的目录结构如下:
html-pdf-chrome/
├── src/
│ ├── index.js
│ ├── config.js
│ └── utils/
│ └── helper.js
├── test/
│ └── index.test.js
├── .gitignore
├── LICENSE
├── README.md
└── package.json
目录结构说明
src/
: 包含项目的主要源代码文件。index.js
: 项目的入口文件。config.js
: 项目的配置文件。utils/
: 包含一些辅助工具函数。helper.js
: 辅助工具函数文件。
test/
: 包含项目的测试文件。index.test.js
: 入口文件的测试。
.gitignore
: Git 忽略文件配置。LICENSE
: 项目许可证文件。README.md
: 项目说明文档。package.json
: 项目依赖和脚本配置文件。
项目的启动文件介绍
项目的启动文件是 src/index.js
。该文件主要负责初始化项目并启动服务。以下是 index.js
的主要内容:
const express = require('express');
const { convert } = require('./config');
const app = express();
app.get('/convert', async (req, res) => {
try {
const pdf = await convert(req.query.url);
res.contentType('application/pdf');
res.send(pdf);
} catch (error) {
res.status(500).send(error.message);
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
启动文件说明
- 引入
express
模块创建一个 Express 应用。 - 引入
config.js
中的convert
函数,用于将 HTML 转换为 PDF。 - 定义一个
/convert
路由,接收 URL 参数并调用convert
函数生成 PDF 文件。 - 启动服务器,监听端口 3000。
项目的配置文件介绍
项目的配置文件是 src/config.js
。该文件主要负责配置项目的各种参数和功能。以下是 config.js
的主要内容:
const chromeLauncher = require('chrome-launcher');
const CDP = require('chrome-remote-interface');
async function convert(url) {
const chrome = await chromeLauncher.launch({
chromeFlags: ['--headless', '--disable-gpu', '--no-sandbox']
});
const protocol = await CDP({ port: chrome.port });
const { Page, Emulation } = protocol;
await Promise.all([Page.enable()]);
await Page.navigate({ url });
await Page.loadEventFired();
const { data } = await Page.printToPDF();
await protocol.close();
await chrome.kill();
return Buffer.from(data, 'base64');
}
module.exports = { convert };
配置文件说明
- 引入
chrome-launcher
和chrome-remote-interface
模块,用于启动无头 Chrome 并进行远程控制。 convert
函数接收一个 URL 参数,启动无头 Chrome,加载页面并将其转换为 PDF。- 使用
chrome-launcher
启动无头 Chrome,并使用chrome-remote-interface
进行远程控制。 - 加载页面并等待页面加载完成,然后调用
Page.printToPDF
生成 PDF 文件。 - 关闭协议和 Chrome 进程,返回生成的 PDF 文件。
以上是 HTML-PDF-Chrome 项目的基本使用教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望这些内容能帮助你更好地理解和使用该项目。