143 votes

Supprimer l'en-tête et le pied de page de window.print()

J'utilise window.print() pour imprimer une page, mais l'en-tête et le pied de page contiennent le titre de la page, le chemin du fichier, le numéro de page et la date. Comment les supprimer ?

J'ai aussi essayé la feuille de style d'impression.

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

Aidez-nous. Merci.

7 votes

Ces éléments sont spécifiques aux paramètres du navigateur de l'utilisateur. Je ne pense pas que vous puissiez les supprimer par le biais de CSS ou de JavaScript.

0 votes

Je pense que cette question nécessite une clarification : Essayez-vous de supprimer les éléments d'en-tête et de pied de page du HTML qui s'affiche à l'écran ou voulez-vous éliminer les en-têtes et les pieds de page qui sont ajoutés par la fonction d'impression ?

6voto

muthukumar Points 361

Éviter la marge supérieure et inférieure résoudra votre problème

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

5voto

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

2voto

Sammi Points 1

@page { margin: 0; } fonctionne bien dans Chrome et Firefox. Je n'ai pas trouvé de moyen de corriger IE par le biais de css. Mais vous pouvez aller dans la mise en page d'IE sur votre propre machine et mettre les marges à 0. Appuyez sur alt puis sur le menu fichier dans le coin supérieur gauche et vous trouverez Mise en page. Cela ne fonctionne que pour une seule machine à la fois...

1voto

Amit Kumar Points 31

L'idée de base est donc d'avoir un div (avec display none) contenant les éléments à imprimer. Maintenant, au clic d'un bouton, l'impression ne se fait pas sur l'ensemble du corps mais seulement sur cette div particulière. J'ai rencontré de nombreux problèmes lors de l'impression d'une div (partie du HTML) en utilisant window.print(). J'ai utilisé la méthode ci-dessous et cela fonctionne sans problème dans Edge, Chrome et Mozilla pour moi, voyons si cela vous aide aussi.

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;
}

Appelez cela comme

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

0voto

Yasitha Points 537

Ce sera la solution la plus simple. J'ai essayé la plupart des solutions sur Internet mais seule celle-ci m'a aidé.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X