Node+Puppeteer将html(文件、url、字符串)转pdf

HTML/URL转PDF全能工具-跨平台一键部署解决方案

下载地址

https://gitee.com/shang000629/document-conver-releases/releases

申请链接

https://vercel.server.driedrice.top/doc-convert/email_apply?email=填写你的邮箱地址

基于Node.js + Puppeteer构建的智能PDF转换工具,支持:

  • HTML文件转PDF
  • 网页URL转PDF
  • ✏️ 原始字符串转PDF
  • ️ 自定义页面尺寸/页眉页脚/打印样式

核心优势

  1. 多环境支持:

    • Windows免编译(解压即用exe)
    • Linux便携版(需google-chrome)
    • Docker容器化部署(docker-compose一键启动)
  2. 技术亮点:

    • 基于Chrome内核精准渲染(Puppeteer)
    • 单文件二进制打包(pkg技术)
    • 支持Headless无界面模式
    • 低内存占用高性能转换

使用场景

  • 自动化报告生成
  • 网页内容存档
  • 合同/协议标准化输出
  • 动态内容PDF化处理

环境要求:

  • Windows系统需安装Chrome浏览器(v89+)
  • Linux系统需安装google-chrome
  • Docker版自动处理依赖

提供开箱即用的CLI工具和API接口,轻松集成到现有工作流!

config.yml 说明

申请链接

https://vercel.server.driedrice.top/doc-convert/email_apply?email=填写你的邮箱地址

接口响应成功后,会发送appid到填写的邮箱地址

# 邮箱 更改你申请的邮箱地址
email: [email protected]

# appid 更改为你申请的appid
appid: example-appid

# windows chrome安装路径 ex: C:\Program Files\Google\Chrome\Application\\chrome.exe
windowsChromePath: C:\Program Files\Google\Chrome\Application\\chrome.exe

# linux google-chrome安装路径 ex: /usr/bin/google-chrome
linuxChromePath: /usr/bin/google-chrome

# 使用generic-pool创建的puppeteer的浏览器池配置
puppeteerBrowserPool:
   # 默认10 最大浏览器实例数
   max: 10
   # 默认1 最小浏览器实例数
   min: 1
   # 默认512 每一个浏览器实例 最大可重用次数,超过后将重启实例。0表示不检验
   maxUses: 512
   # 默认true 初始化时初始化实例
   autostart: true
   # 默认1800000 指定资源在连接池中保持空闲状态的最大时间(单位:毫秒)。如果资源在池中空闲的时间超过此值,它将被销毁并从池中移除。
   idleTimeoutMillis: 1800000
   # 默认300000 指定驱逐线程运行的时间间隔(单位:毫秒)。驱逐线程会定期检查池中资源,销毁空闲时间超过 idleTimeoutMillis 的资源。
   evictionRunIntervalMillis: 300000

1、在docker中使用

docker目录,修改config.yml中的appid和email为你的appid和email

直接运行以下命令

docker-compose up -d

2、在windows系统中使用

需要安装谷歌浏览器并正确配置config.yml中的windowsChromePath
windows目录,修改config.yml中的appid和email为你的appid和email,直接运行exe文件即可

3、在linux系统中使用

需要安装google-chrome并正确配置config.yml中的linuxChromePath
linux目录,修改config.yml中的appid和email为你的appid和email, chmod +x document-conver.linux, 然后直接运行即可

接口文档

1、html文件转pdf

请求方式: POST

请求地址: /html_file_to_pdf

参数说明:
使用multipart/form-data POST上传文件, 文件标识名为"file"

url参数中支持以下参数

2、html字符串转pdf

请求方式: POST

请求地址: /html_str_to_pdf

参数说明:
请求body中发送json

参数 是否必须 说明
html html字符串
pdfOptions 查看

请求示例:

{
   "html": "

html文本转pdf

", "pdfOptions": { "displayHeaderFooter": false, "format": "A4", "printBackground": true, "preferCSSPageSize": true, "margin": { "top": "10mm", "bottom": "10mm", "left": "10mm", "right": "10mm" } } }

3、html网页url转pdf

请求方式: POST

请求地址: /html_str_to_pdf

参数说明:
请求body中发送json

参数 是否必须 说明
url 有效http网页链接
cachePage 是否使用浏览器缓存,默认使用
pdfOptions 查看

请求示例:

{
   "url": "https://www.baidu.com/",
   "cachePage": true,
   "pdfOptions": {
      "displayHeaderFooter": false,
      "format": "A4",
      "printBackground": true,
      "preferCSSPageSize": true,
      "margin": {
         "top": "10mm",
         "bottom": "10mm",
         "left": "10mm",
         "right": "10mm"
      }
   }
}

你可能感兴趣的:(Node+Puppeteer将html(文件、url、字符串)转pdf)