用于打印网页的安全宽度(以像素为单位)?


85

打印网页的安全宽度(以像素为单位)是多少?

我的页面上有大图像,我想确保打印时不会被剪切掉。

我知道不同的浏览器页边距和US Letter / DIN A4纸张尺寸。这样我们得到了标准的字母大小和一些默认的DPI值。但是我可以将它们转换为像素值以在图像的width属性中指定吗?


3
而不是使用以像素为单位的宽度,您应该使用width:auto它将内容宽度调整为纸张的宽度
Marko Vranjkovic 2013年

Answers:


89

至于真正的“普遍答案”,我无法提供。但是,我可以为某些细节提供简单而明确的答案...

670像素

至少对于Microsoft产品,这似乎是一个安全的答案。我读了很多建议,包括675,但是在自己测试之后,我想到了670。

除了所有DPI,页边距问题,硬件差异之外,此答案基于以下事实:如果我在IE9中使用打印预览(标准页边距)–并将打印尺寸设置为100%,而不是默认的“缩小以适合” ,所有内容都适合页面,而不会在此宽度处被截断。

如果我向我自己发送HTML电子邮件并通过Windows Live Mail 2011(Outlook Express变成了它)接收了HTML电子邮件,并且我以670的宽度打印页面,那么一切都合适。如果将其发送到实际的硬拷贝或MS XPS文件(虚拟打印输出),则适用。

在进行实验之前,我使用了700的任意宽度。在上述所有情况下,页面的一部分都被截断了。当我降低到670时,一切都变得非常合适。

至于我如何设置宽度–我只是使用一个原始的“包装” html表并将其宽度定义为670。

如果您可以决定最终用户的软件,那么这些事情就很简单了。如果您不能(通常如此),则可以测试其使用的浏览器等细节,并对重要的解决方案进行硬编码。在IE和FF之间,您将覆盖大约90%的Web用户。为“其他每个人”添加一些其他代码,这些代码通常似乎可以正常工作,并称之为一天。


我想补充一下评论,在此回答时,FF和IE可能已在它们之间使用了90%的浏览器(我发现google不太可能向任何与其他人进行过搜索的人提供chrome浏览器(目前是imo较轻的浏览器),但随着趋势的变化和浏览器份额的变化,它的可能性不大,就像其他市场份额一样。
克里斯(Chris

这回答了这个问题,尽管它显然比简单的px大小复杂。
rune711 2013年

45

它不像外观那么简单。我只是遇到一个类似的问题,这就是我得到的:首先,关于Wikipedia的一些背景知识。

接下来,在CSS中,对于纸张,它们具有pt,即点或1/72英寸。因此,如果您要获得与显示器相同的图像大小,首先必须知道显示器的DPI / PPI(通常为96,如Wikipedia文章所述),然后将其转换为英寸,然后将其转换为点(除以72)。

但是同样,浏览器在可打印内容方面存在各种问题,例如,如果您尝试使用float css标签,则即使您使用page-break-inside,基于Gecko的浏览器也会在页面中间切入图像:避免; 在您的图片上(请参阅此处,在Mozilla错误跟踪系统中)。

本文在A List Apart上有(更多)关于从浏览器进行打印的信息。

此外,您必须在打印预览中处理宽度“缩小以适合”,以及各种纸张尺寸和方向。

因此,无论您是要找到一个以英寸为单位的良好图像width: 511pt;尺寸,还是以像素为单位(7.1“ * 72 = 511.2,这样对于信纸尺寸的纸张都适用),而不管像素大小如何,还是走宽百分比宽度,然后根据您的图像宽度在纸张尺寸上。

祝好运...


实际上,我只是想创建一个我想打印的材料(明信片,传单等)的PHP Image GD版本,就更容易了,我只是从数据库中获取了信息,并据此对其进行了重新格式化。我只是保持正确的像素比例。4x6明信片(350dpi)== 2135x1435 px
Michael J. Calkins

20

我发现的问题的一种解决方案是将宽度设置为英寸。到目前为止,我仅在Chrome中测试/确认了此功能。它可以很好地用于我的用途(打印出8.5 x 11的纸张)

@media print {
    .printEl { 
        width: 8.5in;
        height: 11in;
    }
}

5
您没有考虑页边距。或A4纸张尺寸的可能性。
Blazemonger,2015年

1
这对我来说很完美,意义非凡。
leedotpang 2015年

使用@Blazemonger@media print可以设置它们。您可以设置size: lettersize: A4smashingmagazine.com/2015/01/designing-for-print-with-css
J.Ko

@ J.Ko那不是重点;最终用户可能会使用A4或信纸,而CSS设计人员无法确定用户可以使用哪种纸张。
Blazemonger

10

对于打印,我不会设置任何宽度,也不会去除任何阻碍打印布局具有动态宽度的障碍。这意味着,如果使浏览器窗口越来越小,则不会剪切/隐藏内容,而文档会变长。这样,您可以确定其余的内容将由打印机/ pdf创建器处理。

固定宽度的元素(例如图像或表格)呢?

图片

我能想到的选择:

  • 在打印CSS中将图像缩小到可以假定的宽度,在任何情况下都可以使用,而不要使用pt而不是px(但是无论如何,打印将需要更多的点/单位,因此这几乎不成问题)
  • 从打印中排除

桌子

  • 删除固定宽度
  • 如果您确实有包含大量信息的表,请使用景观
  • 不要将表格用于布局目的
  • 从打印中排除
  • 提取内容,将其打印为段落

http://www.intensivstation.ch/en/css/print/

或任何其他Google搜索结果,用于以下各项的组合:CSS,打印,媒体,布局


2
但是,具有固定宽度的元素(例如图像和表格)呢?
aemkei

5

确保在网页上打印图像时不会被剪切的解决方案是使用以下CSS规则:

@media print { 
  img { 
    max-width:100% !important;
  } 
}

4

打印机不了解像素,但了解点(CSS中的pt)。最好的解决方案是编写一个额外的CSS以进行打印,其所有度量均以点为单位。

然后,在您的HTML代码的开头部分,输入:

<link href="style.css" rel="stylesheet" type="text/css" media="screen">
<link href="style_print.css" rel="stylesheet" type="text/css" media="print">

但是图像需要以像素为单位指定的width和height属性。我需要根据打印机标准DPI和尺寸将PT值转换为像素。
aemkei

然后,您必须使用图像容器...或进行反复试验;)但是,我认为使用两个分离的CSS文件(一个用于屏幕,另一个用于打印)是一个好习惯。
ARemesal

1
<img>标签添加一个环绕声<div>,div的宽度以pt为单位,高度为img,img则得到width:100%; height:100%;
Hafenkranich

0

我怀疑是否有一个...它取决于浏览器,打印机(物理最大dpi)及其驱动程序,您所指出的纸张尺寸(而且我可能也想在B5纸张上打印...),设置(是横向还是纵向?),此外,您通常可以更改比例(百分比)等。
让用户调整设置...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.