恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

html-pdf-chrome CreateOptions 5分钟配好

  • 首页
  • 资讯中心
  • /
  • html-pdf-chrome CreateOptions 5分钟配好

相关资讯

WebToEpub 实战:如何把网页小说打包成可离线阅读的 EPUB 2026/8/22 18:23:54
LLM Agent工具调用安全:系统性枚举与覆盖度审计实战指南 2026/8/22 18:23:54
从零搭建后端服务时我学到的几件事 2026/8/22 18:23:54

最新资讯

3分钟跑起一个 EPUB 阅读器:epubjs-reader 入门
从RNN到Transformer:NLP技术演进与预训练模型实战指南
前端工程师转型AI Agent开发:基于TypeScript与LangChain的实战指南
AViTS技术:自适应令牌选择如何优化生成式AI推理效率
从零掌握继电器模块:Arduino与树莓派控制220V电器实战指南
基于Python+Hadoop的大学生消费行为大数据分析系统的设计与实现毕业设计项目源码

今日推荐

markdown-it-vue 踩坑排障:从安装到渲染的 6 个高频问题快速讲清
多尺度智能体控制:从宏观密度场到微观决策的架构与实践
CUBE标准:统一AI智能体评测的度量衡与架构解析

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

html-pdf-chrome CreateOptions 5分钟配好

发布时间:2026/8/22 18:28:55
html-pdf-chrome CreateOptions 5分钟配好 html-pdf-chrome CreateOptions 5分钟配好【免费下载链接】html-pdf-chromeHTML to PDF or image (jpeg, png, webp) converter via Chrome/Chromium项目地址: https://gitcode.com/gh_mirrors/ht/html-pdf-chromehtml-pdf-chrome 让 Chrome 直接渲染 HTML吐出 PDF 或图片。整套配置就收在一个 CreateOptions 对象里。输出和你浏览器里看到的一致。它比 wkhtmltopdf 强的地方在 CSS3 和 JS 支持完整不会出现渲染偏差。比 puppeteer 轻不背大框架还能直接挂到一个常驻的 Chrome 上复用。 如何复用 Chrome 实例接法只有两条路二选一。第一条连常驻 Chrome。你自己把 Chrome 拉起来打开调试端口Node 连上去。每次生成 PDF 都不用重启浏览器最快。官方也推荐这么做。第二条自动拉起。不传 host 和 port库自己用 chrome-launcher 起一个 Chrome用完就杀掉。省事但慢高频场景别用。用 pm2 把常驻 Chrome 拉起来崩了能自动重启pm2 start google-chrome \ --interpreter none \ -- \ --headless --disable-gpu \ --hide-scrollbars \ --remote-debugging-port9222代码里写port: 9222就连上它。走自动拉起的话改传chromePath或chromeFlags指定二进制和启动参数。 printOptions 常用 8 个字段怎么调printOptions 原样透传给 Chrome 的 printToPDF。不用全设最常调的是下面 8 个。字段类型作用踩坑提示landscapebooleanfalse 竖版true 横版横版时记得和纸张宽高一起换printBackgroundboolean印不印背景色和图片默认 false彩色表头想显示就得开marginTop/Bottom/Left/Rightnumber四边边距单位英寸开页眉页脚时上下边距得大于 0paperWidth/paperHeightnumber纸张尺寸单位英寸默认美版 LetterA4 是 8.27×11.69scalenumber内容缩放0.1 到 2内容被裁就调小displayHeaderFooterboolean渲不渲染页眉页脚不开的话模板写了也白写headerTemplate/footerTemplatestring页眉页脚的 HTML可用 pageNumber、totalPages 占位pageRangesstring页码范围如 1-5不写就打印全部页页眉页脚模板用得多看一段就懂const options: htmlPdf.CreateOptions { port: 9222, printOptions: { displayHeaderFooter: true, headerTemplate: div classtitle月度报表/div, footerTemplate: div第 span classpageNumber/span 页 / span classtotalPages/span 页/div, marginTop: 0.5, marginBottom: 0.5, }, };占位类名写好Chrome 自动填页码。模板里想放图片得 base64 内联外链加载不出来。 截图想截手机效果就改哪三个数传了 screenshotOptions输出就是图片不传就是 PDF。screenshotOptions: { format: png, // png、jpeg 或 webp quality: 85, // 只对 jpeg 生效 clip: { x: 0, y: 0, width: 800, height: 600 }, // 裁剪区域 }, deviceMetrics: { width: 375, // 手机逻辑宽 height: 667, // 逻辑高 deviceScaleFactor: 2, // 2 倍清晰 mobile: true, },deviceMetrics 管视口。要手机效果就盯住width、height、deviceScaleFactor这三个数。前两个填手机逻辑分辨率最后一个给 2 或 3图才够锐。顺手把mobile设 true让 Chrome 模拟移动端的 UA。⏱️ 什么时候再转五种 completionTrigger页面打开后别急着转等内容好了再动。completionTrigger 五种挑一个触发方式适合什么页面超时怎么给Timer不知道等什么就等固定时长参数是毫秒new CompletionTrigger.Timer(3000)Element数据回来后才渲染的内容SPA第二个参数new CompletionTrigger.Element(#app, 5000)Event页面会主动派发自定义事件第三个参数new CompletionTrigger.Event(rendered, #chart, 5000)LifecycleEvent等网络或绘制信号稳定第二个参数new CompletionTrigger.LifecycleEvent(networkIdle, 5000)Variable你自己控制变量完成后置 true第二个参数new CompletionTrigger.Variable(pageReady, 5000)静态页用networkIdle就够。SPA 建议用Element等关键元素出现。超时比实际加载时间略大一点外层timeout再做一道兜底。 端到端报表 PDF 和移动截图带鉴权的报表 PDF靠请求头带 tokenimport * as htmlPdf from html-pdf-chrome; async function monthlyReport() { const options: htmlPdf.CreateOptions { port: 9222, extraHTTPHeaders: { Authorization: Bearer report-token }, printOptions: { landscape: true, printBackground: true, marginTop: 0.5, marginBottom: 0.5, }, completionTrigger: new htmlPdf.CompletionTrigger.Timer(2000), timeout: 60000, }; const html h1月度报表/h1p数据……/p; const pdf await htmlPdf.create(html, options); await pdf.toFile(monthly-report.pdf); }移动端整页截图还是改 deviceMetrics 那三个数import * as htmlPdf from html-pdf-chrome; async function mobileShot() { const options: htmlPdf.CreateOptions { port: 9222, screenshotOptions: { format: png }, deviceMetrics: { width: 375, height: 667, deviceScaleFactor: 2, mobile: true, }, completionTrigger: new htmlPdf.CompletionTrigger.LifecycleEvent(networkIdle), }; const img await htmlPdf.create(https://example.com/mobile, options); await img.toFile(mobile.png); }结果用 toFile 落盘也能用 toBase64、toBuffer、toStream 转成别的形态。 五个翻车现场连不上 9222 端口报 Connection refused。确认 Chrome 是用--remote-debugging-port9222起的代码里的 port 要一致。中文和 emoji 变方块。HTML 没声明字符集。补上meta charsetUTF-8并确认服务器装有中文字体。页面没加载完就转了图是空的或内容残缺。把默认等待换成networkIdle或改用Element等关键元素。内存一直涨常驻 Chrome 越跑越肥。用 pm2 定时重启或开启clearCache: true。headful 下字体缺失可见模式里部分字变方块。装上 fonts-noto-cjk 之类的字体包再试。完整字段含义以源码为准类型定义在 CreateOptions.ts用法示例见 README.md。配置心法五句话优先连常驻 Chrome别每次都重启。 超时给得比加载时间大一点留余量。 completionTrigger 跟页面类型走别傻等。 挂上 console 处理器先看到报错。 字符集写死 UTF-8少踩乱码坑。【免费下载链接】html-pdf-chromeHTML to PDF or image (jpeg, png, webp) converter via Chrome/Chromium项目地址: https://gitcode.com/gh_mirrors/ht/html-pdf-chrome创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号