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>
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 ?