Skip to content

funny-node/html2image

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

html2image

一个利用 puppeteer 将 html 转为图片的服务

适用于一些无法很好地解析富文本的场景,可以将富文本转为图片后供前端渲染

安装

先确保安装 node 环境 (version >= 8)

# 依赖安装
$ npm install

# 启动服务
$ npm start

服务默认跑在 8888 端口,端口冲突可自行修改

目前的使用形式是截图直接通过 path 参数保存在服务器,所以程序需要和调用程序的服务部署在同一台服务器上,也可以自行修改程序,返回 buffer 或者 base64,然后再自行保存(调用 page.screenshot() 方法,不添加 path 参数,默认会返回 buffer,也可以进行配置,返回 base64)

使用

服务启动后,默认接口地址即为 ip:8888,接受 post 请求

post 请求对象需提供三个参数

  • html {String} 富文本 html 字符串
  • width {Number} 需要生成的图片宽度
  • path {String} 保存的路径
  • return: {Object}
    • code {Number} 200 为保存成功,201 为保存失败

具体使用方式可查看 example 文件夹

CentOS 里部署

如需要在 CentOS 里部署,我遇到的几个坑如下:

  1. npm install 在下载 puppeteer 的某个过程会提示没有权限,尝试用 sudo npm install
  2. 用 pm2 启动服务后,马上 error,查看 pm2 log,是因为 CentOS 部署需要安装额外的模块,参考 这里,我将其列出的 Dependencies 全部用 yum 安装后解决(某些教程可能会让你用 ldd 命令查看缺失的模块,但是 这里例出的名称不一定就是直接可用来安装的名称,具体查看 这篇文章
  3. 继续报错,提示需要加上 --no-sandbox,参考 这里
  4. 截止目前应该可以正常截图了,但是少部分中文会无法显示,参考 给 CentOS 安装中文字体备用)(有的服务器可能根本没有安装中文,就应该先安装中文,但是我的情况是中文已经安装过了,可以用 locale 查看安装的语言)

About

将 html 转为图片存储的 Node.js 服务

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published