用途:把本地 HTML 文件、远程 URL 或通过 stdin 传入的 HTML 转换为高保真 PDF,适合导出网页、生成打印就绪的报告/发票、制作必须恰好一页的海报或证书,以及需要正确方向与字体渲染的希伯来语/阿拉伯语 RTL 文档。
主要能力:通过 Puppeteer(无头 Chromium/Chrome/Edge)实现 Chrome 级渲染,支持 CSS Grid/Flexbox、背景与网页字体;输入支持本地文件、URL 和 stdin(-);RTL 默认自动检测,也可用 --rtl 强制;提供格式、横竖方向、边距(统一或分边)、缩放、背景打印、页眉页脚模板等打印控制;等待 networkidle0、document.fonts.ready 及可配置额外等待,减少字体与资源缺失。
使用方式:需 Node.js >= 16、npm >= 8,先 npm install 安装 puppeteer。基本命令:node assets/html-to-pdf.js input.html output.pdf;URL 转 PDF:node assets/html-to-pdf.js https://example.com page.pdf;强制 RTL:node assets/html-to-pdf.js hebrew.html hebrew.pdf --rtl;stdin:echo "<h1>Example Title</h1>" | node assets/html-to-pdf.js - output.pdf --rtl;可指定浏览器:--executable-path 或环境变量 PUPPETEER_EXECUTABLE_PATH。常用参数包括 --format(A4/Letter/Legal/A3/A5,默认 A4)、--landscape、--margin 及分边边距(默认 20mm)、--scale(0.1-2.0,默认 1)、--background/--no-background、--header、--footer、--wait(默认 1000ms)。
限制与注意:单页 PDF 需确保内容恰好适配页面,避免在 html/body 上设置背景(易产生多余空白页),改用全高容器并配合 overflow: hidden;若溢出可调 --scale 或 --margin,仍失败需修正 HTML/CSS。生成后建议目视检查空白页与文字裁切,最多迭代 5 次。缺少必要源数据、文件或凭据时不应使用;不用于编造结果或超出范围的任务。输出文件建议命名为 html_to_pdf_result.md,并附验证摘要。