为什么调用 window.print() 打印出来的样式和页面显示的不一样?
我在做一个订单详情页,点击打印按钮调用 window.print(),但打印预览里字体变小、布局错乱,明明页面上看着是正常的。是不是漏了什么打印专用的样式?
我试过加 @media print,但效果还是不对。这是我的 HTML 结构:
<div class="order-container">
<h2>订单 #12345</h2>
<p>客户:张三</p>
<table>
<tr><td>商品A</td><td>¥100</td></tr>
</table>
<button onclick="window.print()">打印</button>
</div>
1. 确保在CSS里设置了打印专用的样式,比如:
2. 记得把打印按钮隐藏掉,不然会出现在打印结果里
3. 可以用pt单位替代px,打印时更稳定
4. 如果表格断页有问题,加这个防止跨页断开:
我遇到过类似问题,这样改完基本就能和网页显示一致了。打印样式就是这么坑,经常要加一堆!important才能覆盖浏览器的默认行为。
首先,强烈建议在CSS里专门为打印写一套样式。不要用普通的@media print,那个太基础了。试试这样:
其次,关于字体问题,打印时最好用常见的web安全字体,比如这样:
还有个小技巧,可以在head里加这个meta标签确保缩放比例正确:
如果还有问题,可能是打印机驱动在作怪。建议先试试Chrome的打印预览,它能比较好地模拟实际打印效果。另外记得在打印设置里把"页眉页脚"选项关掉,那些鬼东西经常会把布局搞乱。
最后说个血泪教训:千万别在打印样式里用flex布局!打印机渲染引擎对flex支持很迷,老老实实用float或者table布局最稳。