通过Web服务器将HTML转换为PDF。
这是一个简单的Express服务器,监听POST请求,接收任意HTML内容并将其转换为PDF,用于生成精美的报告。
使用的技术:
提供适用于ARM和AMD架构的镜像。
以下示例(可直接复制粘贴到shell解释器中)将在端口3000上运行服务,并将简单的HTML文档转换为PDF。
docker run --name html2pdf --detach --publish=3000:3000 --memory 500M ghcr.io/ccjmne/puppeteer-html2pdf:latest
# 首次启动时可能需要几秒钟预计算字体缓存
until curl -q localhost:3000 >/dev/null 2>&1; do sleep 0.1; done
# 或快速测试(按Ctrl-C终止):
# docker run -it --rm -p=3000:3000 ghcr.io/ccjmne/puppeteer-html2pdf:latest
curl localhost:3000 -H 'Content-Type: text/html' --data '
Hello World!
I love deadlines. I like the whooshing sound they make as they fly by.
— Douglas Adams
'
> out.pdf && xdg-open out.pdf
| 名称 | 描述 | 默认值 |
|---|---|---|
| BODY_LIMIT | 请求体最大大小。传递给https://github.com/expressjs/body-parser#limit%E5%92%8C%60express.json%60%E3%80%82 | 1mb |
| BROWSER_KEEPALIVE | 共享浏览器实例在闲置多长时间(毫秒)后关闭。 | 30000(30秒) |
| CHROMIUM_ARGS | 传递给底层Chromium实例的标志。 | --disable-web-security --no-sandbox --disable-setuid-sandbox |
PDF信息字典的属性也可通过查询参数控制,包括:
| 参数 | 描述 |
|---|---|
title | 文档标题 |
author | 文档创建者姓名 |
subject | 文档主题 |
keywords | 与文档关联的关键字 |
creator | 如果文档是从其他格式转换为PDF的,指创建原始文档的合规产品名称 |
producer | 如果文档是从其他格式转换为PDF的,指将其转换为PDF的合规产品名称 |
creationDate | 文档创建日期和时间 |
modDate | 文档最近修改的日期和时间 |
其中五个参数提供默认值:
| 参数 | 默认值 |
|---|---|
title | 第一个(或唯一的)HTML文档或网页的标题 |
creator | 通过Puppeteer生成PDF的Chromium驱动程序全名和版本 |
producer | 本应用程序的名称和版本 |
creationDate | 当前日期和时间 |
modDate | 当前日期和时间 |
添加字体的最简单方法是将包含所需字体的卷挂载到容器内的/usr/share/fonts目录。
# 获取字体
longcang=$(curl -L 'https://fonts.googleapis.com/css2?family=Long+Cang' | grep -Po '(?
我也支持自定义字体!
鉴于对人类家庭所有成员的固有尊严及其平等的和不移的权利的承认,乃是世界自由、正义与和平的基础
'
> out.pdf && xdg-open out.pdf
Web服务器监听您选择的端口(参见快速开始部分),并公开以下两个端点:
单页文档,默认设置(格式:A4,方向:portrait):
| 单页文档 | 多页文档 | 要渲染的URL列表 | |
|---|---|---|---|
| 请求路径 | / | /multiple | /url |
| 请求方法 | POST | POST | POST |
Content-Type头 | text/html | application/json | text/plain |
| 请求体 | HTML内容 | 包含HTML字符串的JSON数组 | 每行一个绝对URL |
| 请求体(示例) | Hello World! | [" Page 1 ", " Page 2 " ] | https://google.com |
所有端点均支持以下查询参数:
filename:生成的PDF文件名(如果缺少,将自动追加.pdf扩展名)onepage:true表示强制为每个URL或HTML文档创建单个(可能很大的)页面。如果设置,将覆盖format和landscapetrapped除外):
titleauthorsubjectkeywords(可提供多个,例如:?keywords=travelling&keywords=korea&keywords=beautiful)creatorproducercreationDate(按ISO-8601解析,例如:2025-12-28)modDate(按ISO-8601解析,例如:2025-12-28)pathheaderTemplatemargin单页文档,默认设置(格式:A4,方向:portrait):
curl 'http://localhost:3000' \
-H 'Content-Type: text/html' \
-d ' Hello World! ' \
> out.pdf && xdg-open out.pdf
单页文档(格式:A3,方向:landscape):
curl 'http://localhost:3000?format=a3&landscape=true' \
-H 'Content-Type: text/html' \
-d ' Hello World! ' \
> out.pdf && xdg-open out.pdf
指定信息字典:
curl 'http://localhost:3000?author=ccjmne&title=Hello+World' \
-H 'Content-Type: text/html' \
-d ' Hello World! ' \
> out.pdf && xdg-open out.pdf
多页文档:
curl 'http://localhost:3000/multiple' \
-H 'Content-Type: application/json' \
-d '[
" Hello World! ",
"This is the second page"
]' \
> out.pdf && xdg-open out.pdf
将网页转换为PDF:
curl 'http://localhost:3000/url?onepage=true' \
-H 'Content-Type: text/plain' \
-d 'https://justinjackson.ca/webmaster/' \
> out.pdf && xdg-open out.pdf
将多个网页转换为单个PDF:
curl 'http://localhost:3000/url?onepage=true' \
-H 'Content-Type: text/plain' \
-d '
' \
> out.pdf && xdg-open out.pdf
每次GitHub Release时自动构建并发布到GitHub Packages(GitHub容器注册表)。
包含一个全面的脚本,可用于构建和发布镜像的新版本:./compose.sh
MIT。随意使用。 有关更多详情,请参阅LICENSE文件。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务