CSS设定A4纸张大小

问题描述

我对此进行了更多研究,实际的问题似乎是在媒体规则下分配initial页面。如果没有在任何父元素上定义特定的长度值(在这种情况下,解析为…但实际上小于规则中定义的大小的任何值),则在Chrome中,似乎该元素会导致页面内容 导致相同的问题)。width``print``width: initial``.page width``width: initial``width: auto``@page

因此,不仅内容现在对于页面 了(大约 2cm ),而且页面填充也将比初始内容稍大 2cm ,以此类推(它似乎将内容渲染width: auto为的宽度, ~196mm 然后按比例缩放整个内容直到〜的宽度, 210mm 但奇怪的是,相同的缩放比例应用于任何宽度小于的内容 210mm

解决此问题,您只需在print媒体规则中将A4纸的宽度和高度分配给html, body或直接分配给A4纸宽度和高度.page,在这种情况下,避免使用initial关键字。

@page {
  size: A4;
  margin: 0;
}
@media print {
  html, body {
    width: 210mm;
    height: 297mm;
  }
  /* ... the rest of the rules ... */
}

解决方法

我需要在网络中模拟A4纸,并允许打印此页,因为它在浏览器(特别是Chrome)上显示。我将元素大小设置为21cm x
29.7cm,但是当我发送打印(或打印预览)时,它会裁剪页面。

body {

  margin: 0;

  padding: 0;

  background-color: #FAFAFA;

  font: 12pt "Tahoma";

}



* {

  box-sizing: border-box;

  -moz-box-sizing: border-box;

}



.page {

  width: 21cm;

  min-height: 29.7cm;

  padding: 2cm;

  margin: 1cm auto;

  border: 1px #D3D3D3 solid;

  border-radius: 5px;

  background: white;

  box-shadow: 0 0 5px rgba(0,0.1);

}



.subpage {

  padding: 1cm;

  border: 5px red solid;

  height: 256mm;

  outline: 2cm #FFEAEA solid;

}



@page {

  size: A4;

  margin: 0;

}



@media print {

  .page {

    margin: 0;

    border: initial;

    border-radius: initial;

    width: initial;

    min-height: initial;

    box-shadow: initial;

    background: initial;

    page-break-after: always;

  }

}


<div class="book">

  <div class="page">

    <div class="subpage">Page 1/2</div>

  </div>

  <div class="page">

    <div class="subpage">Page 2/2</div>

  </div>

</div>

我想我忘记了什么。但是会是什么呢?

  • Chrome :剪贴页,双页( 这正是我需要的工作
  • Firefox :完美运行。
  • IE10 :信不信由你,这很完美!
  • Opera :打印预览时非常容易出错

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”