使用WeasyPrint生成203mm×82mm票据时PDF出现白边求助
解决WeasyPrint生成自定义尺寸PDF时的白边问题
针对你用Python(CGI、Jinja2、WeasyPrint)生成203mm×82mm票据PDF时出现的白边问题,可通过以下关键调整解决:
1. 重置根HTML元素样式
WeasyPrint从<html>元素开始渲染,默认浏览器样式可能给它添加了隐性边距,需同步重置:
html { margin: 0; padding: 0; width: 203mm; height: 82mm; }
2. 强制页面尺寸精确匹配
在@page规则中使用exact关键字,确保WeasyPrint严格按指定尺寸生成页面,避免自动调整:
@page { size: exact 203mm 82mm; margin: 0 !important; padding: 0; }
3. 确保元素尺寸无溢出
给票据容器添加box-sizing: border-box,防止后续添加内边距、边框时导致尺寸超出页面:
#ticket { height: 82mm; width: 203mm; background-color: red; margin: 0; box-sizing: border-box; }
4. 完整调整后的CSS示例
html, body { margin: 0; padding: 0; width: 203mm; height: 82mm; background: red; } #ticket { height: 82mm; width: 203mm; background-color: red; margin: 0; box-sizing: border-box; } @page { size: exact 203mm 82mm; margin: 0 !important; padding: 0; }
这些调整的核心是确保从根元素到页面规则的所有层级都严格匹配目标尺寸,消除任何可能导致白边的隐性样式或渲染偏差。
内容的提问来源于stack exchange,提问作者TomCraft
相关产品推荐
相关产品推荐

