当前位置: 首页 > 面试题库 >

CSS设定A4纸张大小

慕宪
2023-03-14
问题内容

我需要在网络中模拟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, 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 :打印预览时非常容易出错

问题答案:

我对此进行了更多研究,实际的问题似乎是在媒体规则下分配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 ... */
}

这似乎可以将所有其他内容保留在原始CSS中,并解决了Chrome中的问题(已在Windows,OS
X和Ubuntu下在不同版本的Chrome中进行了测试)。



 类似资料:
  • 问题内容: 是否可以使HTML页面的行为类似于MS Word中的A4大小的页面? 本质上,我希望能够在浏览器中显示HTML页面,并在A4尺寸页面的尺寸中概述内容。 为了简单起见,我假设HTML页面仅包含文本(没有图像等),并且没有标签。 同样,当打印HTML页面时,它将以A4尺寸的纸页形式出现。 问题答案: 早在2005年11月,AlistApart.com就发表了一篇文章,介绍了他们如何只使用H

  • 我在一列中有两个具有唯一ID的工作表。我需要确保每当在一张图纸(Sheet1)中添加新ID时,它都会复制到另一张图纸(Sheet2)中的最后一个空行。IMPORTRANGE将不会作为动态工作。在其他工作表中添加的任何静态信息都与相应的ID无关。 在另一个线程[1]中,我得到了开发这个脚本的帮助,它将完全做到这一点。但是,这个脚本将在列A中的另一个工作表中插入数据。我如何修改脚本,以便我可以决定我希

  • 我试图写一个脚本,将信息从一张表复制到另一张表中的Google Sheets,作为每日更新。信息是按行显示的(例如。第5行有我想复制的所有信息,A列是输入的日期)如果条目上的日期(A列)与今天的日期不匹配,那么整行需要转移到另一张床单。 我无法将包含输入信息日期的单元格与今天的日期进行比较,然后捕获该单元格的行号,然后设置要复制的变量。 在新工作表上,它需要扫描下一个空行的范围,然后将信息粘贴到下

  • 如何设置自定义的高度和宽度的PDF格式像这样: 我要设定高度:13.6厘米,宽度:21.2厘米 如果我导出为PDF,纸张大小始终为A4格式,如何使纸张大小为13.6cm(高度)和**21.2cm(宽度),如上图所示 我在yii2上使用mpdf kartik。。 这是我的控制器代码: 希望能有帮助。。。

  • 我正在尝试使用flyingsaucer将html文档保存为PDF,但当我查看Adobe Reader中的文档属性(页面大小:8.26 x 11.69英寸)时,生成的文档最终总是具有A4维度。 我确实阅读了文档,我正在传递css@page{size:letter;}风格虽然它确实对输出有影响,但在Adobe Reader中,页面大小始终保持在8.26 x 11.69。例如,如果我将页面大小设置为le