
DeckTape 是一个高质量的HTML演示框架PDF导出工具,基于Puppeteer构建,利用Google Chrome进行网页布局和渲染,并通过JavaScript API控制无头Chrome实例。它支持多种主流HTML演示框架,提供通用模式以适应几乎任何框架,并具备插件扩展架构,还可选择捕获不同分辨率的幻灯片截图。
DeckTape 原生支持以下演示框架:
DeckTape Docker镜像可从Docker Hub获取:
bashdocker pull astefanutti/decktape
bashdocker run [选项] astefanutti/decktape [decktape选项] [命令] <演示文稿URL> <输出PDF文件名>
| 选项 | 描述 | 默认值 |
|---|---|---|
-s <size>, --size <size> | 幻灯片视口大小,格式为<宽度>x<高度> | - |
-p <ms>, --pause <ms> | 每张幻灯片导出前的延迟时间(毫秒) | 1000 |
--load-pause <ms> | 页面加载完成到开始导出的延迟时间(毫秒) | 0 |
--screenshots | 捕获每张幻灯片为图像 | false |
--screenshots-directory <dir> | 截图输出目录 | screenshots |
--screenshots-size <size> | 截图分辨率,可重复指定 | --size |
--screenshots-format <format> | 截图图像格式(jpg/png) | png |
--slides <range> | 导出幻灯片范围(如'1-3,5,8') | - |
--chrome-path <path> | Chrome/Chromium可执行文件路径 | - |
--chrome-arg <arg> | 传递给Chrome的额外参数,可重复 | - |
automatic(默认)
自动检测演示文稿使用的框架并选择兼容的插件进行导出。
generic
通过模拟按键交互导出幻灯片,需指定--key选项(默认ArrowRight),适用于不暴露API的框架:
bashdocker run --rm -v $(pwd):/slides astefanutti/decktape generic --key=ArrowDown <URL> slides.pdf
1. 转换在线演示文稿
将在线reveal.js演示转换为PDF并保存到当前目录:
bashdocker run --rm -t -v $(pwd):/slides astefanutti/decktape https://revealjs.com/demos/3.9.2 slides.pdf
2. 转换本地文件
转换本地HTML演示文稿(假设文件位于~/slides.html):
bashdocker run --rm -t -v $(pwd):/slides -v ~:/home/user astefanutti/decktape /home/user/slides.html slides.pdf
3. 转换本地服务器上的演示文稿
转换运行在本地8000端口的演示文稿:
bashdocker run --rm -t --net=host -v $(pwd):/slides astefanutti/decktape http://localhost:8000 slides.pdf
注意:在macOS和Windows上,可能需要使用
host.docker.internal代替localhost。
4. 捕获多分辨率截图
导出PDF的同时捕获400x300和800x600分辨率的截图:
bashdocker run --rm -v $(pwd):/slides astefanutti/decktape --screenshots --screenshots-size=400x300 --screenshots-size=800x600 <URL> slides.pdf
5. 导出指定范围的幻灯片
仅导出第1-3张和第5张幻灯片:
bashdocker run --rm -v $(pwd):/slides astefanutti/decktape --slides 1-3,5 <URL> slides.pdf
以下是使用DeckTape导出的演示文稿示例:
| HTML5演示文稿 | 框架 | 导出PDF |
|---|---|---|
| https://tdd.github.io/devoxx-es6-maintenant/ | reveal.js | https://astefanutti.github.io/decktape/examples/devoxx-es6-maintenant.pdf (2.3MB) |
| https://github.com/hakimel/reveal.js/blob/360bc940062711db9b8020ce4e848f6c37014481/test/examples/math.html | reveal.js | https://astefanutti.github.io/decktape/examples/reveal-js-mathjax.pdf (0.3MB) |
| Getting Involved in Open Source | reveal.js | https://astefanutti.github.io/decktape/examples/opensource-getting-involved.pdf (0.6MB) |
| http://astefanutti.github.io/further-cdi | Asciidoctor + DZSlides | https://astefanutti.github.io/decktape/examples/going-further-with-cdi.pdf (2.4MB) |
| Deck.js Modern HTML Presentations | deck.js | https://astefanutti.github.io/decktape/examples/deck-js-presentation.pdf (0.5MB) |
| The Official Remark Slideshow | remark | https://astefanutti.github.io/decktape/examples/remark-js-slideshow.pdf (0.15MB) |
使用--chrome-arg选项,例如设置代理:
bashdocker run --rm -v $(pwd):/slides astefanutti/decktape --chrome-arg=--proxy-server="proxy:8080" <URL> slides.pdf
某些Linux发行版默认禁用用户命名空间,可临时使用--no-sandbox选项:
bashdocker run --rm -v $(pwd):/slides astefanutti/decktape --chrome-arg=--no-sandbox <URL> slides.pdf
Chromium 64+对本地文件或外部样式表的CSS规则访问有CORS限制,可禁用Web安全:
bashdocker run --rm -v $(pwd):/slides astefanutti/decktape --chrome-arg=--disable-web-security <URL> slides.pdf
尝试使用-s选项指定特定视口大小,如-s 1024x768:
bashdocker run --rm -v $(pwd):/slides astefanutti/decktape -s 1024x768 <URL> slides.pdf
不要在URL中添加?print-pdf或加载打印样式表,DeckTape不依赖reveal.js的内置PDF支持。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务