有没有办法,用CSS或javascript,以更改默认打印机设置,当有人在他们的浏览器打印?当然,“从他们的浏览器打印”我的意思是某种形式的HTML,而不是PDF或一些其他插件依赖mime类型。
请注意:
如果一些浏览器提供这个和其他的没有(或者如果你只知道如何做一些浏览器),我欢迎特定于浏览器的解决方案。
同样,如果你知道一个主流浏览器对EVER有这样的限制,这也是有帮助的,但一些相当新的文档将被赞赏。 (简单地说,“违反XYZ的安全政策”在XYZ在过去三年里对所述政策做出重大改变时并不十分令人信服)。
最后,当我说“更改默认打印设置”我不是指永远,只是为我的页面,我具体指的是打印边距,页眉和页脚。
我非常清楚,CSS提供了改变页面方向以及页面边距的选项。其中一个困难是火狐。如果我将页边距设置为1英寸,它将ADDS这个半英寸它已经放置到位。
我非常希望减少在我的客户的网站上的PDF的使用,但是对演示的侵犯(以及缺乏可靠性)是他们的主要关注。
缺点是不同浏览器的行为不一致。 Safari仍然不支持设置打印机页面边距,但所有其他主要浏览器现在都支持它。
使用@page指令,可以指定页面的打印机边距(与HTML元素的常规CSS边距不同):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Print Test</title>
<style type="text/css" media="print">
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
html
{
background-color: #FFFFFF;
margin: 0px; /* this affects the margin on the html before sending to printer */
}
body
{
border: solid 1px blue ;
margin: 10mm 15mm 10mm 15mm; /* margin you want for the content */
}
</style>
</head>
<body>
<div>Top line</div>
<div>Line 2</div>
</body>
</html>
这在Firefox 3.6,IE 7,Safari 5.1.7或Google Chrome 4.1中无效。
设置@page margin在IE 8,Opera 10,Google Chrome 21和Firefox 19中有效果。
尽管在这些浏览器中您的内容的页面边距设置正确,但是在解决页眉/页脚隐藏方面的行为并不理想。
这是它在不同的浏览器中的行为:
>在Internet Explorer中,边距在此打印设置中实际设置为0mm,如果您执行预览,则默认情况下将获得0mm,但用户可以在预览中更改。
您将看到页面内容实际上位置正确,但浏览器打印页眉和页脚显示为非透明背景,因此有效地隐藏该位置的页面内容。
>在Firefox的较新版本中,它的位置正确,但是显示了页眉/页脚文本和内容文本,因此它看起来像是浏览器页眉文本和页面内容的混合。
>在Opera中,当在标准css中使用非透明背景时,页面内容隐藏标题,并且页眉/页脚位置与内容冲突。非常好,但看起来奇怪,如果margin设置为一个小的值,导致头部分可见。页面边距也未正确设置。
>在Chrome较新版本中,如果将@page margin设置为小到页眉/页脚位置与内容冲突,则浏览器页眉和页脚将被隐藏。在我看来,这正是这应该如何行为。
所以结论是,Chrome有最好的实现这一点,隐藏的页眉/页脚。