Javascript 是否从页面禁用浏览器打印选项(页眉、页脚、页边距)?

Javascript 是否从页面禁用浏览器打印选项(页眉、页脚、页边距)?,javascript,html,css,browser,printing,Javascript,Html,Css,Browser,Printing,我在SO和其他几个网站上看到过这个问题以几种不同的方式被问到,但大多数问题要么过于具体,要么已经过时。我希望有人能在这里提供一个明确的答案,而不是迎合猜测 当有人在浏览器中打印时,是否有一种使用CSS或javascript更改默认打印机设置的方法?当然,“从他们的浏览器打印”是指某种形式的HTML,而不是PDF或其他依赖于插件的mime类型 请注意: 如果某些浏览器提供这种功能,而其他浏览器不提供(或者如果您只知道如何为某些浏览器提供这种功能),我欢迎特定于浏览器的解决方案 类似地,如果您知道某

我在SO和其他几个网站上看到过这个问题以几种不同的方式被问到,但大多数问题要么过于具体,要么已经过时。我希望有人能在这里提供一个明确的答案,而不是迎合猜测

当有人在浏览器中打印时,是否有一种使用CSS或javascript更改默认打印机设置的方法?当然,“从他们的浏览器打印”是指某种形式的HTML,而不是PDF或其他依赖于插件的mime类型

请注意:

如果某些浏览器提供这种功能,而其他浏览器不提供(或者如果您只知道如何为某些浏览器提供这种功能),我欢迎特定于浏览器的解决方案

类似地,如果您知道某个主流浏览器对这样做有特定的限制,这也很有帮助,但是一些相当最新的文档将不胜感激。(当XYZ在过去三年中对所述策略进行了重大更改时,简单地说“这违反了XYZ的安全策略”是不太令人信服的)

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

我很清楚CSS提供了改变页面方向和页面边距的选项。其中一个难题就是Firefox。如果我将页边距设置为1英寸,它会将其添加到已放置的半英寸


我非常想减少客户网站上PDF的使用,但侵犯演示文稿(以及缺乏可靠性)是他们最关心的问题。

因为您提到了“在他们的浏览器内”和firefox,如果您使用的是Internet Explorer,您可以通过临时设置注册表中的值来禁用页眉/页脚,请参见示例。抱歉,我还没有听说过在其他浏览器中实现这一点的方法。Daniel和Mickel的答案似乎相互冲突,我想在firefox的注册表中可能有类似的设置来删除页眉/页脚或自定义它们。您签出了吗?

CSS标准支持一些高级格式。CSS中有一个
@page
指令,可以启用某些仅适用于分页媒体(如纸张)的格式。看

缺点是不同浏览器中的行为不一致。Safari仍然完全不支持设置打印机页边距,但所有其他主流浏览器现在都支持它

使用
@page
指令,可以指定页面的打印机边距(与HTML元素的常规CSS边距不同):


打印测试
@页面
{
大小:auto;/*auto是初始值*/
边距:0mm;/*这会影响打印机设置中的边距*/
}
html
{
背景色:#FFFFFF;
边距:0px;/*这会影响发送到打印机之前html上的边距*/
}
身体
{
边框:纯色1px蓝色;
边距:10mm 15mm 10mm 15mm;/*内容所需的边距*/
}
顶线
第2行
请注意,我们在这里基本上禁用了页面特定的页边距,以达到删除页眉和页脚的效果,因此我们在正文上设置的页边距不会用于分页符(因为),这意味着只有当打印内容只有一页时,它才能正常工作

这在Firefox 3.6、IE 7、Safari 5.1.7或Google Chrome 4.1中不起作用

设置@page边距在IE 8Opera 10谷歌Chrome 21Firefox 19中确实有效
尽管这些浏览器中的页面边距设置正确,但在试图解决页眉/页脚隐藏问题时,这种行为并不理想

以下是它在不同浏览器中的行为:
  • Internet Explorer中,在本次打印的设置中,边距实际上设置为0毫米,如果进行预览,默认边距为0毫米,但用户可以在预览中更改边距。
    您将看到页面内容实际上已正确定位,但浏览器打印页眉和页脚显示为不透明背景,因此有效地将页面内容隐藏在该位置

  • Firefox较新版本中,它的位置正确,但同时显示页眉/页脚文本和内容文本,因此它看起来像是浏览器页眉文本和页面内容的糟糕组合

  • Opera中,当在标准css中使用不透明背景时,页面内容会隐藏页眉,并且页眉/页脚位置与内容冲突。很好,但如果边距设置为一个小值,导致页眉部分可见,则看起来很奇怪。此外,页边距设置不正确

  • Chrome较新版本中,如果@page边距设置得太小以致页眉/页脚位置与内容冲突,则浏览器页眉和页脚将隐藏。在我看来,这正是它应该表现出来的


因此,结论是Chrome在隐藏页眉/页脚方面具有最好的实现。

我收到一个客户的类似请求,他希望删除页眉、页码和html页脚。在本例中,客户机呈现的HTML页面可以兼作正式证书。添加的URL、页面和标题是不相关的,会导致最终产品不太令人满意。在某些方面,它看起来很便宜

Media=Print无法禁用这些浏览器默认设置。唯一的解决方法是告诉用户单击“齿轮”按钮并打开/关闭这些项目。说真的,20年来我都不知道我能做到这一点(我们认为
<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>
#BrowserPrintDefaults{display:none} 
<head>
<style media="print">
    @page 
    {
        size: auto;   /* auto is the initial value */
        margin: 0mm;  /* this affects the margin in the printer settings */
    }

    body 
    {
        background-color:#FFFFFF; 
        border: solid 1px black ;
        margin: 0px;  /* this affects the margin on the content before sending to printer */
   }
</style>
</head>
<head>
<style type="text/css">

@page{
  size: auto A4 landscape;
  margin: 3mm;
}

</style>
</head>
<head>
<style type="text/css">

@page{
  size: auto;
  margin: 3mm;
}

</style>
</head>
<style media="print">
   @page {
      size: auto;
      margin: 0;
  }
</style>
@page 
{
    size:  auto;   /* auto is the initial value */
    margin: 0mm;  /* this affects the margin in the printer settings */
}
html
{
    background-color: #FFFFFF; 
    margin: 0mm;  /* this affects the margin on the html before sending to printer */
}
body
{
    padding:30px; /* margin you want for the content */
}