web-dev-qa-db-fra.com

fonction jQuery Print pour imprimer du contenu div avec css

J'ai cette fonction pour mon plugin Wordpress utilise jQuery qui imprime le contenu du div avec la classe "table_disp". Comment puis-je imprimer le style css avec. 

function pop_print(){
    w=window.open(null, 'Print_Page', 'scrollbars=yes');        
    w.document.write(jQuery('.table_disp').html());
    w.document.close();
    w.print();
}

Une idée?

12
Gurjot Bhatti

Vous devez inclure la même feuille de style que vous utilisez dans la page parente de la fenêtre contextuelle. Vous voudrez peut-être créer un stub/wrapper de page factice contenant votre feuille de style, puis injecter votre code HTML.

var myStyle = '<link rel="stylesheet" href="http://mysite.com/mystyle.css" />';
w.document.write(myStyle + jQuery('.table_disp').html());
function PrintElem(elem) {
    Popup(jQuery(elem).html());
}

function Popup(data) {
    var mywindow = window.open('', 'my div', 'height=400,width=600');
    mywindow.document.write('<html><head><title></title>');
    mywindow.document.write('<link rel="stylesheet" href="http://www.test.com/style.css" type="text/css" />');  
    mywindow.document.write('<style type="text/css">.test { color:red; } </style></head><body>');
    mywindow.document.write(data);
    mywindow.document.write('</body></html>');
    mywindow.document.close();
    mywindow.print();                        
}

<a href="#" id="hrefPrint" onclick="PrintElem('.print_div')">Print</a>
3
Nisarg Patel

si vous pouvez ajouter un plugin, le plugin Jquery printThis fonctionne très bien (puisque vous utilisez déjà jQuery) et fait exactement ce dont vous avez besoin. http://plugins.jquery.com/printThis/

Il crée une iframe et utilise votre page css plus, ce qui permet d'ajouter un fichier css spécialement pour l'impression, ainsi que d'autres éléments.

1
Gisheri

Ajouter une feuille de style à la place

var css= '<link rel="stylesheet" href="/css/print.css" />';
            var printContent = document.getElementById("printContentID");

            var WinPrint = window.open('', '', 'width=900,height=650');
            WinPrint.document.write(printContent.innerHTML);
            WinPrint.document.head.innerHTML = css;
            WinPrint.document.close();
            WinPrint.focus();
            WinPrint.print();
            WinPrint.close();
0
Aftab Ahmed