← 返回 Skills 市场
owenrao

html-to-pdf

作者 owenrao · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
107
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install html2pdf
功能描述
Convert an HTML file to a PDF using headless Chrome (Puppeteer) — the same approach atypica uses for its AI-generated research reports. Use this skill whenev...
使用说明 (SKILL.md)

Overview

This skill converts an HTML file to PDF using Puppeteer (headless Chromium), exactly how atypica exports its AI research reports. Two modes are supported:

Mode When to use
Single-page (default) Design/report pages meant to look like one tall poster — no page breaks. Full-width at 1440 px.
Paginated Documents meant to be printed or read page-by-page (A4, Letter, etc.).

Quickstart (3 steps)

# 1. Copy the bundled scripts to a working directory
cp \x3Cskill-dir>/scripts/html-to-pdf.js ./
cp \x3Cskill-dir>/scripts/package.json ./

# 2. Install the only dependency (downloads Chromium automatically, ~170 MB, one-time)
npm install

# 3. Run
node html-to-pdf.js report.html report.pdf

\x3Cskill-dir> is the directory that contains this SKILL.md file.

Note: npm install puppeteer (~170 MB) downloads a pinned Chromium binary. This is the only install step — no system Chrome, no wkhtmltopdf, no separate server needed. If the environment already has Puppeteer installed, skip step 2.


Command reference

node html-to-pdf.js \x3Cinput.html> \x3Coutput.pdf> [options]

Options:
  --paginated         A4-paginated mode (respects @media print, page-breaks)
  --format \x3Cfmt>      Page format: A4 (default), A3, Letter, Legal
  --width \x3Cpx>        Viewport width for single-page mode (default: 1440)
  --wait \x3Cms>         Extra milliseconds to wait after page load (for JS-rendered content)
  --header-footer     Add page-number footer in paginated mode

Examples

# Single-page full-height (atypica report style)
node html-to-pdf.js report.html report.pdf

# A4 paginated document
node html-to-pdf.js document.html document.pdf --paginated

# A4 with page numbers
node html-to-pdf.js document.html document.pdf --paginated --header-footer

# Narrower single-page layout
node html-to-pdf.js report.html report.pdf --width 1280

# Wait 2 s for JavaScript-rendered charts
node html-to-pdf.js dashboard.html dashboard.pdf --wait 2000

How it works (mirrors atypica's browser service)

  1. Launches headless Chromium via Puppeteer with sandbox disabled and CJK font hints enabled.
  2. Loads the HTML from a file:// URL so relative assets (images, local CSS) resolve correctly.
  3. Injects system-font CSS to ensure Chinese/Japanese/Korean characters render on any OS.
  4. Single-page mode: measures document.body.scrollHeight, sets viewport to that height, and generates a single-page PDF at that exact size — no clipping, no page breaks.
  5. Paginated mode: injects @media print CSS for clean page-breaks, then generates a standard-format paginated PDF.
  6. Writes the PDF buffer to the output path.

Handling common issues

Problem Fix
Chromium not found after npm install puppeteer Run npx puppeteer browsers install chrome
Missing system fonts / boxes instead of CJK chars Inject works for most cases; for guaranteed rendering install fonts-noto-cjk (Linux) or ensure macOS system fonts are accessible
JavaScript-rendered content missing Add --wait 2000 (or more) to let JS execute after load
Images not loading Make sure image src paths are relative to the HTML file location
PDF cut off at bottom The script auto-measures height; if content loads lazily add --wait
--no-sandbox error in strict container Puppeteer requires --no-sandbox in Docker/CI; this flag is already set

Dependency notes

  • Node.js ≥ 18 required (≥ 20 recommended)
  • puppeteer is the only npm dependency — it self-contains Chromium
  • No global Chrome installation needed
  • Works on macOS, Linux, and Windows (WSL)
  • In CI/Docker, add --disable-dev-shm-usage (already included in the script)
安全使用建议
This skill appears to do what it says. Before running: (1) Be aware npm install puppeteer will download many packages and a ~170 MB Chromium binary; ensure you have bandwidth/disk space. (2) Rendering may cause Chromium to fetch external assets (Google Fonts, CDNs, remote images referenced in the HTML) — if the HTML contains URLs to private services, those hosts will see requests (possible data leakage). (3) The script runs Chromium with --no-sandbox (often required in CI/Docker); for untrusted HTML run it in an isolated container or VM. (4) Requires Node ≥18; review the HTML you convert if it contains sensitive data or external references.
功能分析
Type: OpenClaw Skill Name: html2pdf Version: 1.0.0 The skill provides HTML-to-PDF conversion using Puppeteer in `scripts/html-to-pdf.js`, but it employs several high-risk configurations. Specifically, it disables the browser sandbox (`--no-sandbox`), uses the `file://` protocol to load local content, and lacks input sanitization for the file paths provided as arguments, which could lead to arbitrary file read/write vulnerabilities. While these behaviors are plausibly needed for the stated purpose and are documented in `SKILL.md`, they represent a significant attack surface and meet the criteria for suspicious classification due to the inherent security risks.
能力评估
Purpose & Capability
Name/description (html-to-pdf via headless Chrome) match the provided files and instructions. The included script implements the stated functionality and there are no unrelated credentials, binaries, or config paths requested.
Instruction Scope
Instructions and the script operate on local HTML files (read, patch, write temp file, produce PDF) as described. The script intentionally fetches external resources (Google Fonts, Tailwind CDN, remote images/CSS referenced by the HTML) when rendering; this means Chromium will perform outgoing network requests to those hosts. The script also launches Chromium with --no-sandbox (documented in SKILL.md), which is commonly necessary in containers but reduces sandboxing. These behaviors are expected for accurate rendering but are worth noting as they cause network traffic and reduce process isolation.
Install Mechanism
This is an instruction-only skill (no registry install). The recommended install is npm install (puppeteer) which will download many npm packages and a pinned Chromium binary (~170 MB). The packages come from the npm registry (package.json/package-lock.json present); there are no downloads from obscure personal servers in the provided files. Installing will write dependencies and a large browser binary to disk.
Credentials
No environment variables, credentials, or external config paths are required or requested. The script only uses local filesystem access to read input and write output (intended behavior).
Persistence & Privilege
The skill does not request persistent or elevated platform privileges, does not set always:true, and does not modify other skills or system-wide agent settings. It writes a short-lived temporary file next to the input HTML and deletes it on exit.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install html2pdf
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /html2pdf 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
- Major update: Rewritten skill interface and README for a simplified, robust HTML-to-PDF export exactly as used in atypica AI research reports. - Provides single-page (poster style, full height) and paginated (A4/Letter) PDF modes with clear CLI options. - Adds concise usage instructions: one-step local install with bundled scripts and npm install. - Clarifies command-line options and troubleshooting for JS-rendered content, images, and fonts. - Removes former reference docs; workflow is now fully explained in the main documentation. - Scripts and package files are now formally part of the skill for easy setup.
元数据
Slug html2pdf
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

html-to-pdf 是什么?

Convert an HTML file to a PDF using headless Chrome (Puppeteer) — the same approach atypica uses for its AI-generated research reports. Use this skill whenev... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 107 次。

如何安装 html-to-pdf?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install html2pdf」即可一键安装,无需额外配置。

html-to-pdf 是免费的吗?

是的,html-to-pdf 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

html-to-pdf 支持哪些平台?

html-to-pdf 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 html-to-pdf?

由 owenrao(@owenrao)开发并维护,当前版本 v1.0.0。

💬 留言讨论