javascript – 从页面停用浏览器打印选项(页眉,页脚,页边距)?

我已经看到这个问题在几个不同的方式在SO和其他几个网站,但大多数是太具体或过时的。我希望有人能够在这里提供一个确定的答案,而不是嘲笑投机。

有没有办法,用CSS或javascript,以更改默认打印机设置,当有人在他们的浏览器打印?当然,“从他们的浏览器打印”我的意思是某种形式的HTML,而不是PDF或一些其他插件依赖mime类型。

请注意:

如果一些浏览器提供这个和其他的没有(或者如果你只知道如何做一些浏览器),我欢迎特定于浏览器的解决方案。

同样,如果你知道一个主流浏览器对EVER有这样的限制,这也是有帮助的,但一些相当新的文档将被赞赏。 (简单地说,“违反XYZ的安全政策”在XYZ在过去三年里对所述政策做出重大改变时并不十分令人信服)。

最后,当我说“更改默认打印设置”我不是指永远,只是为我的页面,我具体指的是打印边距,页眉和页脚。

我非常清楚,CSS提供了改变页面方向以及页面边距的选项。其中一个困难是火狐。如果我将页边距设置为1英寸,它将ADDS这个半英寸它已经放置到位。

我非常希望减少在我的客户的网站上的PDF的使用,但是对演示的侵犯(以及缺乏可靠性)是他们的主要关注。

CSS标准启用一些高级格式化。 CSS中有一个@page指令,用于启用一些仅适用于分页媒体(如纸)的格式。见http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html

缺点是不同浏览器的行为不一致。 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有最好的实现这一点,隐藏的页眉/页脚。

原文地址:https://www.cnblogs.com/hzcya1995/p/13317502.html