如何用Shell脚本移除Chrome生成PDF的浏览器页眉页脚冗余内容?
移除Chrome生成PDF中的冗余页眉页脚(保留页码)
方案一:生成PDF时直接控制(推荐)
Chrome的命令行工具支持自定义页眉页脚模板,能直接生成仅含页码的PDF,无需事后修改,效率更高。
假设你的HTML文件是hello.html,执行以下命令:
google-chrome --headless --disable-gpu --print-to-pdf="output.pdf" \ --header-template="" \ --footer-template='<span style="font-size:10px; margin:auto;">第<span class="pageNumber"></span>页,共<span class="totalPages"></span>页</span>' \ file:///path/to/hello.html
--header-template=""清空页眉,去除默认的标题、URL等内容--footer-template自定义页脚,仅保留页码信息,样式可按需调整
方案二:已生成PDF的事后移除脚本
如果已经有带冗余内容的PDF,可通过Shell脚本结合工具裁剪页面,去掉页眉页脚所在区域。
用pdfcrop的脚本示例
#!/bin/bash INPUT_PDF="$1" OUTPUT_PDF="clean_${INPUT_PDF}" # 裁剪参数:左、上、右、下边距(单位:bp,1bp≈0.35mm) # 需根据Chrome生成PDF的实际页眉页脚高度微调,通常顶部/底部各留30bp左右 pdfcrop --margins '0 30 0 30' "$INPUT_PDF" "$OUTPUT_PDF"
使用方式:
chmod +x clean_pdf.sh ./clean_pdf.sh your_chrome_pdf.pdf
用mutool的脚本示例
#!/bin/bash INPUT_PDF="$1" OUTPUT_PDF="clean_${INPUT_PDF}" # 获取PDF页面尺寸(宽x高,单位:pt) PAGE_SIZE=$(mutool info "$INPUT_PDF" | grep "Page size" | awk '{print $3}') WIDTH=$(echo "$PAGE_SIZE" | cut -d'x' -f1) HEIGHT=$(echo "$PAGE_SIZE" | cut -d'x' -f2) # 计算裁剪后的高度:去掉顶部30pt和底部30pt NEW_HEIGHT=$(echo "$HEIGHT - 60" | bc) # 裁剪页面,保留中间有效内容区域 mutool draw -o "$OUTPUT_PDF" -c "0 30 $WIDTH $NEW_HEIGHT" "$INPUT_PDF"
使用前需安装MuPDF工具(sudo apt install mupdf-tools),执行方式同上。
关于Print CSS的补充
你提到Print CSS支持性不佳是准确的,不同浏览器对@page规则的实现差异极大,Chrome打印引擎对自定义页眉页脚的CSS支持有限,因此命令行参数或事后裁剪的方案更可靠。
内容的提问来源于stack exchange,提问作者AnC
相关产品推荐
相关产品推荐

