从window.print()中删除页眉和页脚

时间:2011-11-22 14:05:49

标签: css printing

我正在使用window.print()打印页面,但我的页眉和页脚包含页面标题,文件路径,页码和日期。如何删除它们?

我也试过打印样式表。

#header, #nav, .noprint
{
display: none;
}

请帮忙。感谢。

15 个答案:

答案 0 :(得分:115)

在Chrome中,可以使用

隐藏此自动页眉/页脚
@page { margin: 0; }

由于内容将扩展到页面限制,因此页面打印页眉/页脚将不存在。当然,在这种情况下,您应该在body元素中设置一些边距/填充,以便内容不会一直延伸到页面的边缘。由于普通打印机无法获得无边距打印,并且可能不是您想要的,您应该使用以下内容:

@media print {
  @page { margin: 0; }
  body { margin: 1.6cm; }
}

正如Martin在评论中指出的那样,如果页面有一个滚动超过一页的长元素(如大表),则会忽略边距,并且打印版本看起来很奇怪。

在此回答的原始时间(2013年5月),它仅适用于Chrome,现在不确定,从不需要再试一次。如果您需要支持无法播放的浏览器,您可以动态创建PDF并打印(您可以在其上创建自我打印的PDF嵌入JavaScript),但这是一个巨大的麻烦。

答案 1 :(得分:20)

Firefox:

  • moznomarginboxes
  • 中添加<html>属性

示例:

<html moznomarginboxes mozdisallowselectionprint>

答案 2 :(得分:18)

我确定在您的css文件中添加此代码将解决问题

<style type="text/css" media="print">
    @page 
    {
        size: auto;   /* auto is the initial value */
        margin: 0mm;  /* this affects the margin in the printer settings */
    }
</style>

You may visit this to know more about this

答案 3 :(得分:10)

今天我的同事偶然发现了同样的问题。

作为&#34;保证金:0&#34;解决方案适用于基于铬的浏览器,但是,即使@page页边距设置为零, Internet Explorer 也会继续打印页脚。

解决方案(更多的是黑客攻击)是在@page上添加负余量。

@page {margin:0 -6cm}
html {margin:0 6cm}

请注意,负边距不适用于Y轴,仅适用于X

希望它有所帮助。

答案 4 :(得分:8)

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

<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 current printer page size */
            margin: 0mm;  /* this affects the margin in the printer settings */
        }

        body 
        {
            background-color:#FFFFFF; 
            border: solid 1px black ;
            margin: 0px;  /* the margin on the content before printing */
       }
    </style>
</head>
<body>
  <div>Top line</div>
  <div>Line 2</div>
</body>
</html>

并且for firefox使用它

在Firefox中,https://bug743252.bugzilla.mozilla.org/attachment.cgi?id=714383(查看页面源代码::标记HTML)。

在您的代码中,将<html>替换为<html moznomarginboxes mozdisallowselectionprint>.

答案 5 :(得分:2)

@media print {
    .footer,
    #non-printable {
        display: none !important;
    }
    #printable {
        display: block;
    }
}

答案 6 :(得分:2)

这将是最简单的解决方案。我尝试了Internet上的大多数解决方案,但这仅对我有所帮助。

@print{
    @page :footer {color: #fff }
    @page :header {color: #fff}
}

答案 7 :(得分:2)

@page { margin: 0; }在Chrome和Firefox中运行良好。我还没有找到通过CSS修复IE的方法。但是您可以在自己的计算机上的IE中进入页面设置,并将页边距设置为0。按alt,然后按左上角的文件菜单,您将找到页面设置。一次只能在一台机器上使用...

答案 8 :(得分:2)

避免顶部和底部边距将解决您的问题

@media print {
     @page {
        margin-left: 0.5in;
        margin-right: 0.5in;
        margin-top: 0;
        margin-bottom: 0;
      }
}

答案 9 :(得分:1)

所以基本的想法是有一个包含要打印的项目的div(不显示)。现在点击一个按钮不会打印到整个身体,而只是那个特定的 div。使用 window.print() 打印 div(HTML 的一部分)时遇到很多问题。使用下面的方法,它对我来说在 edge、chrome 和 Mozilla 中无缝运行,看看它是否对你也有帮助。

function printDiv(id) {
      var contents = document.getElementById(id).innerHTML;
        var frame1 = document.createElement('iframe');
        frame1.name = "frame1";
        frame1.style.position = "absolute";
        frame1.style.top = "-1000000px";
        document.body.appendChild(frame1);
        var frameDoc = frame1.contentWindow ? frame1.contentWindow : frame1.contentDocument.document ? frame1.contentDocument.document : frame1.contentDocument;
        frameDoc.document.open();
        frameDoc.document.write("<html><head>\n\n                " +
            "<style type=\"text/css\" media=\"print\">\n                       " +
            "@@page\n                    {\n                        " +
            "size:  auto;   /* auto is the initial value */\n                        " +
            "margin: 10mm;  /* this affects the margin in the printer settings */\n    " +
            "                }\n\n                    html\n                    {\n    " +
            "                    background-color: #FFFFFF;\n         " +
            "           }\n\n                    body\n                " +
            "    {   font-family:\"Times New Roman\", Times, serif;\n             " +
            "           border: none ;\n                  " +
            "      margin: 0; /* margin you want for the content */\n                " +
            "    }\n                   .table {\n                    width: 100%;\n      " +
            "              max-width: 100%;\n                    margin-bottom: 20px;\n        " +
            "            border-collapse: collapse;\n                 " +
            "   background-color: transparent;\n                    display: table;\n        " +
            "        }\n                .table-bordered {\n                 " +
            "   border: 1px solid #ccc;\n                }\n                tr {\n            " +
            "        display: table-row;\n                    vertical-align: inherit;\n              " +
            "      border-color: inherit;\n                    padding:15px;\n                }\n      " +
            "          .table-bordered tr td {border: 1px solid #ccc!important; padding:15px!important;}\n   " +
            "             </style><title></title></head><body>".concat(contents, "</body>"));
        frameDoc.document.close();
        setTimeout(function () {
            window.frames["frame1"].focus();
            window.frames["frame1"].print();
            document.body.removeChild(frame1);
        }, 500);
        return false;
}

这样称呼

<a href="#" onclick="javascript:printDiv('divwithcontenttoprint')"> Print </a>

答案 10 :(得分:0)

您不必编写任何代码。在第一次调用window.print()之前更改浏览器的打印设置。 例如在firefox中:

  1. 按Alt或F10查看菜单栏
  2. 单击“文件”,然后单击“页面设置”
  3. 选择标题边距&amp;页眉/页脚
  4. 更改空白的网址 - &gt; image
  5. 和IE的另一个例子(我在以前的版本中使用IE 11,你可以看到这个Prevent Firefox or Internet Explorer from Printing the URL on Every Page):

    1. 按Alt或F10查看菜单栏
    2. 单击“文件”,然后单击“页面设置”
    3. 在页眉和页脚部分更改网址为空。

答案 11 :(得分:0)

1. 适用于Chrome&amp; IE

<script language="javascript">
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.getElementById('header').style.display = 'none';
document.getElementById('footer').style.display = 'none';
document.body.innerHTML = printContents;

window.print();


document.body.innerHTML = originalContents;
}

</script>
<div id="div_print">
<div id="header" style="background-color:White;"></div>
<div id="footer" style="background-color:White;"></div>
</div>
  1. 对于FireFox,l2aelba说
  2. 添加moznomarginboxes属性 示例:

    <html moznomarginboxes mozdisallowselectionprint>
    

答案 12 :(得分:0)

如果你碰巧向下滚动到这一点,我找到了Firefox的解决方案。它将打印来自特定div的内容,而不会显示页脚和标题。您可以根据需要进行自定义。

首先,下载并安装此插件:JSPrintSetup

其次,写下这个函数:

<script>
function PrintElem(elem)
{
    var mywindow = window.open('', 'PRINT', 'height=400,width=600');
    mywindow.document.write('<html><head><title>' + document.title  + '</title>');
    mywindow.document.write('</head><body >');
    mywindow.document.write(elem);
    mywindow.document.write('</body></html>');
    mywindow.document.close(); // necessary for IE >= 10
    mywindow.focus(); // necessary for IE >= 10*/

   //jsPrintSetup.setPrinter('PDFCreator'); //set the printer if you wish
   jsPrintSetup.setSilentPrint(1);

   //sent empty page header
   jsPrintSetup.setOption('headerStrLeft', '');
   jsPrintSetup.setOption('headerStrCenter', '');
   jsPrintSetup.setOption('headerStrRight', '');

   // set empty page footer
   jsPrintSetup.setOption('footerStrLeft', '');
   jsPrintSetup.setOption('footerStrCenter', '');
   jsPrintSetup.setOption('footerStrRight', '');

   // print my window silently. 
   jsPrintSetup.printWindow(mywindow);
   jsPrintSetup.setSilentPrint(1); //change to 0 if you want print dialog

    mywindow.close();

    return true;
}
</script>

第三,在你的代码中,无论你想在哪里编写打印代码,都要这样做(我使用过JQuery。你可以使用普通的javascript):

<script>
$("#print").click(function () {
    var contents = $("#yourDivToPrint").html();
    PrintElem(contents);
})
</script>

显然,您需要点击链接:

<a href="#" id="print">Print my Div</a>

你要打印的div:

<div id="yourDivToPrint">....</div>

答案 13 :(得分:0)

我试图删除手动打印的html页面的页眉和页脚。

此页面上没有任何解决方案对我有用,而只是按照here的定义定义自己的页脚,Firefox不会添加自己的页眉和页脚。

不幸的是,这不适用于Chrome。

在CSS中:

@media screen {
  div.divFooter {
    display: none;
  }
}
@media print {
  div.divFooter {
    position: fixed;
    bottom: 0;
  }
}

将此添加到您的HTML:

<div class="divFooter">
<p>UNCLASSIFIED</p>
</div>
``

答案 14 :(得分:0)

 <html>
<head>
    <title>Print</title>
    <script type="text/javascript">
window.print();
document.margin='none';
</script>
</head>
<body>
  <p>hello</p>
  <p>hi</p>
</body>
</html>

//将其放在脚本文件或脚本标签中。

这将删除所有边距,您将看不到页眉和页脚。