使用Chrome CLI将HTML保存为PDF时如何设置横向模式
--Landscape=true不是Chrome无头模式的有效命令行参数,因此无法生效,以下是两种可行的解决方案:
解决方法
方法1:修改HTML打印样式(无需修改命令,操作最简单)
直接在你的MyHtml.html文件的<head>标签内添加如下CSS规则,即可强制打印时默认使用横向模式:
@page { size: A4 landscape; /* 可按需额外配置打印边距,示例:margin: 1cm; */ }
修改完HTML后,去掉原命令中无效的--Landscape=true参数直接运行即可:
google-chrome --headless --disable-gpu --run-all-compositor-stages-before-draw --print-to-pdf-no-header --print-to-pdf="MyPdf.pdf" "MyHtml.html"
方法2:通过DevTools协议传参(无需修改源HTML,灵活度更高)
如果不能修改源HTML文件,可以调用Chrome DevTools的Page.printToPDF接口传入横向配置,以下是用Puppeteer实现的最简示例:
- 首先安装Puppeteer依赖
npm install puppeteer
- 新建打印脚本
print.js,替换其中的文件路径为你自己的本地路径:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('file:///你的本地路径/MyHtml.html', { waitUntil: 'networkidle0' }); await page.pdf({ path: 'MyPdf.pdf', landscape: true, printBackground: true, displayHeaderFooter: false }); await browser.close(); })();
- 运行脚本即可生成横向PDF
node print.js
内容的提问来源于stack exchange,提问作者Xaphann
相关产品推荐
相关产品推荐

