You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HTML+CSS制作报表时打印PDF与网页显示效果不一致如何解决

核心问题是你没有配置打印专用的媒体查询规则,浏览器打印时会默认调用自带的打印样式,覆盖你写的屏幕端样式,同时Bootstrap的响应式规则在打印场景下会触发小屏适配,导致布局错乱。你直接将下面的样式添加到现有CSS配置中即可:

/* 全局打印纸张设置 */
@page {
  size: A4 portrait; /* 横版打印请改成 A4 landscape */
  margin: 0.5cm; /* 可根据需要调整打印边距 */
}

@media print {
  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    box-sizing: border-box !important;
  }

  html, body {
    width: 210mm !important; /* 竖版A4宽度,横版请改为297mm */
    height: 297mm !important; /* 竖版A4高度,横版请改为210mm */
    margin: 0 !important;
    padding: 0 !important;
  }

  /* 适配自定义page标签打印样式 */
  page {
    width: 100% !important;
    height: 100% !important;
    margin: 0 auto 0.5cm !important;
    box-shadow: none !important; /* 不需要打印阴影可保留,需要则删掉这行 */
  }

  page[size="A4"] {
    width: 100% !important;
    height: 100% !important;
  }

  /* 强制Bootstrap栅格布局和屏幕显示一致,避免响应式缩放错乱 */
  .col-xs-6 { width: 50% !important; float: left !important; }
  .col-xs-5 { width: 41.66666667% !important; float: left !important; }
  .col-md-2 { width: 16.66666667% !important; float: left !important; }
  .col-md-12 { width: 100% !important; float: none !important; }
  .pull-right { float: right !important; }

  /* 禁止内容被分页截断 */
  table, tr, td, img, .container, .row, .border-solid-1 {
    page-break-inside: avoid !important;
  }

  /* 覆盖表格默认打印边框样式 */
  .table-bordered td {
    border: 1px solid #ffffff !important;
  }

  /* 强制字体大小和屏幕显示一致 */
  h6 strong {
    font-size: 17px !important;
  }
  strong {
    font-size: inherit !important;
  }

  /* 图片强制适配容器大小 */
  .img-prod {
    max-width: 100% !important;
    height: auto !important;
  }
}

如果使用横版打印,修改对应注释标注的参数即可,其他自定义样式如果在打印下有异常,直接补充到@media print块内强制覆盖即可。

内容的提问来源于stack exchange,提问作者Thiago Corrêa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:48:02