通过css设置打印机纸张尺寸

问题描述 投票:0回答:6

我的打印机默认尺寸是A4,我需要使用旧的针式打印机打印尺寸为8.5英寸x5.5英寸的工资单。 我尝试将每张工资单

DIV
设置为固定高度,

width: 175.6mm;
height:123.7mm;
margin-left:auto;
margin-right:auto;

虽然它非常适合工资单尺寸,但打印后,纸张会一直滚动到最后,因为工资单纸与A4不同,都是连在一起的。 我不想对打印机纸张尺寸进行任何更改,所以我设置:

@media print 
{
   @page
   {
    size: 8.5in 5.5in;
    size: portrait;
  }
}

但是 Google Chrome 的打印预览仍然显示:

enter image description here

实际上可以这样做吗?或者有什么办法可以强制打印机在打印工资单后停止打印,以防止它继续滚动纸张?(我认为这应该是不可能的)

附注我只使用 Google Chrome。

**更新:

我注意到选择“另存为 PDF”后纸张尺寸会发生变化,如果我选择回默认打印机,纸张尺寸又不正确。

html css google-chrome media-queries printing-web-page
6个回答
12
投票

也许这有效:

@media print {
  @page {
     size: 8.5in 5.5in;
     size: landscape;
  }
}

@media print {
  @page {
    size: 5.5in 8.5in ;
    size: landscape;
  }
}

6
投票

今天我使用的是 Chrome 32.0.1700.107 m

为页面大小建立的W3 CSS3标准与直接从打印界面中的Chrome的“另存为PDF”选项配合得很好。请记住,在 Chrome 的打印界面中使用打印机非常不同,因为它使用打印机的默认尺寸,但在“另存为 PDF”选项的情况下,它确实采用 CSS 建立的尺寸。

多年来,我在针对不同项目的不同界面和解决方案方面遇到了麻烦(例如:直接从服务器生成 PDF,处理量太大且代码混乱,或者告诉用户使用 Windows 打印界面等)。这对我来说是一个很好的解决方案,而且似乎是确定的!

现在可以在网站中仅使用 CSS3 创建具有正确纸张尺寸的 PDF,无需使用第三方软件或其他类型的技巧。

在您的情况下,最好的解决方案是简单地更改打印机中配置的默认纸张尺寸,我向用户建议了一个小的浮动 div,它提供了建议并且在打印中隐藏。 但是,由于您“不希望对打印机纸张尺寸进行任何更改”,如果您想避免在服务器端进行更改,则需要打印人员执行一个步骤:首先保存 PDF,然后将其发送到打印刚刚创建的 PDF。


4
投票

上次我检查时,主流浏览器对 @media print 的支持非常差。我遇到了与你类似的问题,经过几周的尝试,我不得不放弃并转到服务器端 pdf 生成库(PDF4NET)。如果您需要排版、打印文档 - 我认为 HTML 无法解决问题。


2
投票

它对我来说就像这样

@page {
  size: <%= @size_card[0] %>cm  <%= @size_card[1] %>cm;
  margin: 0;
}

我尝试像你所说的“横向”或“纵向”的第二个尺寸属性,但它会覆盖最后一个,所以不需要,因为你已经说了什么是高度,什么是宽度。


0
投票

我认为浏览器对打印机设置的访问权限有限。它由操作系统和打印机驱动程序执行(通过选择纸张来源作为拖拉机进纸器或自定义边距)。


0
投票

这对我来说适用于最新的 chrome 版本 104.0.5112.81(官方版本)(64 位) 适用于纸张尺寸 CR-80(身份证尺寸)

@media print {
    @page {
        size: 86mm 54mm;
        margin: 0;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.