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),仅供参考

相关新闻

数学建模紧凑度:提升模型求解效率与鲁棒性的核心技巧

数学建模紧凑度:提升模型求解效率与鲁棒性的核心技巧

1. 项目概述:为什么紧凑度是数学建模的“命门”干了这么多年数学建模,带过不少队伍,也审过不少论文,我发现一个特别普遍的现象:很多模型从数学上看“完美无缺”,目标函数清晰,约束条件列了一堆&…

2026/8/22 18:29:22 阅读更多 →
整数规划建模与求解:从线性规划到离散优化的核心技术与实战

整数规划建模与求解:从线性规划到离散优化的核心技术与实战

1. 整数规划:从“可分割”到“不可分割”的关键一跃搞数学建模的朋友,尤其是参加过国赛、美赛或者亚太杯这类竞赛的,对“规划”这个词肯定不陌生。线性规划(LP)几乎是每个建模者的入门必修课,它优雅、高效&…

2026/8/22 18:29:22 阅读更多 →
AI智能体开发实战:基于LangChain与MCP协议构建可运行应用

AI智能体开发实战:基于LangChain与MCP协议构建可运行应用

这次我们来看一个面向AI智能体(Agent)开发的实战教程。这个教程的核心目标不是空谈概念,而是提供一套从零基础到实战落地的完整路径,重点解决“学了很多理论,但不知道如何动手”的痛点。它整合了当前最热门的Agent、AI…

2026/8/22 18:29:22 阅读更多 →

最新新闻

0基础能做轮毂修复吗?智能化设备拉低行业入门门槛

0基础能做轮毂修复吗?智能化设备拉低行业入门门槛

不少想要入局轮毂修复领域的汽服门店老板、新手从业者,都有过同样的顾虑:我完全没有数控操作经验,也不懂汽车维修原理,能把轮毂修复技术学明白吗?毕竟传统轮毂修复依赖技师常年累月的经验积累,光是手动编程…

2026/8/23 23:24:39 阅读更多 →
##关于重载,重载与this,super的一些区别##

##关于重载,重载与this,super的一些区别##

一、重写与重载1.1. 重载 (Overload)同一个类中:方法名一样参数列表不一样返回值不参与编译时多态(静态绑定)1.2. 重写 (Override)子类中,重新定义父类的方法方法名相同参数列表相同子类方法的访问权限不能比父类更严格&#xff0…

2026/8/23 23:24:39 阅读更多 →
Windows系统文件veinterop.dll丢失找不到问题解决

Windows系统文件veinterop.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/8/23 23:24:39 阅读更多 →
洗地机可以清理铁屑粉尘吗?工业场景使用注意事项

洗地机可以清理铁屑粉尘吗?工业场景使用注意事项

机加工、五金制造车间地面常会遗留铁屑与金属粉尘,不少企业会疑惑洗地机是否适配这类工况。普通洗地机直接处理大量铁屑粉尘,容易出现管道堵塞、部件磨损等问题,泉州思维博洗地机结合多地工厂实操经验,梳理工业场景下铁屑粉尘清洁…

2026/8/23 23:24:39 阅读更多 →
基于 EasyExcel 的通用 Excel 导入框架设计:注解驱动 + 双管线两段式,从踩坑到性能优化

基于 EasyExcel 的通用 Excel 导入框架设计:注解驱动 + 双管线两段式,从踩坑到性能优化

一次政企项目 Excel 导入需求,从「能跑就行」迭代成了一套通用导入框架:注解驱动、启动期元数据缓存、校验/转换双管线两段式设计。本文完整复盘架构演进、性能优化思路和 EasyExcel 4.x 的真实踩坑记录。一、背景与痛点 后台管理系统的 Excel 导入&…

2026/8/23 23:24:39 阅读更多 →
工业级图像分类框架:从混合精度训练到 ONNX 部署的全链路工程实践

工业级图像分类框架:从混合精度训练到 ONNX 部署的全链路工程实践

一 、项目概述 本项目旨在构建一套生产就绪(Production-Ready)的图像分类系统,而非仅停留在可复现的训练基线。系统覆盖从数据加载、模型训练、可解释性分析,到模型导出、量化加速、API 服务部署的全链路,实现了深度学…

2026/8/23 23:23:38 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →