打印网页的安全宽度(以像素为单位)是多少?
我的页面上有大图像,我想确保打印时不会被剪切掉。
我知道不同的浏览器页边距和US Letter / DIN A4纸张尺寸。这样我们得到了标准的字母大小和一些默认的DPI值。但是我可以将它们转换为像素值以在图像的width
属性中指定吗?
Answers:
至于真正的“普遍答案”,我无法提供。但是,我可以为某些细节提供简单而明确的答案...
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用户。为“其他每个人”添加一些其他代码,这些代码通常似乎可以正常工作,并称之为一天。
它不像外观那么简单。我只是遇到一个类似的问题,这就是我得到的:首先,关于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,这样对于信纸尺寸的纸张都适用),而不管像素大小如何,还是走宽百分比宽度,然后根据您的图像宽度在纸张尺寸上。
祝好运...
我发现的问题的一种解决方案是将宽度设置为英寸。到目前为止,我仅在Chrome中测试/确认了此功能。它可以很好地用于我的用途(打印出8.5 x 11的纸张)
@media print {
.printEl {
width: 8.5in;
height: 11in;
}
}
@media print
可以设置它们。您可以设置size: letter
或size: A4
。smashingmagazine.com/2015/01/designing-for-print-with-css
对于打印,我不会设置任何宽度,也不会去除任何阻碍打印布局具有动态宽度的障碍。这意味着,如果使浏览器窗口越来越小,则不会剪切/隐藏内容,而文档会变长。这样,您可以确定其余的内容将由打印机/ pdf创建器处理。
固定宽度的元素(例如图像或表格)呢?
我能想到的选择:
http://www.intensivstation.ch/en/css/print/
或任何其他Google搜索结果,用于以下各项的组合:CSS,打印,媒体,布局
打印机不了解像素,但了解点(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">
<img>
标签添加一个环绕声<div>
,div的宽度以pt为单位,高度为img,img则得到width:100%; height:100%;
width:auto
它将内容宽度调整为纸张的宽度