2011-09-23 18 views
8

Supponiamo di avere molti div nella mia pagina ma voglio stampare il contenuto di div specifico usando jquery. ho trovato che c'è un plugin per questo.Stampa contenuto DIV di JQuery

jQuery Print Element

utilizzando questo plugin possiamo facilmente stampare div contenuti come di seguito.

$('SelectorToPrint').printElement(); 

ma che succede se il mio div è nascosto nella pagina. quindi funziona? questo plugin può stampare il contenuto del div nascosto?

cosa succede se la stampante non si collega con la macchina client. Voglio mostrare il messaggio se la stampante non è lì per il cliente che "Stampante non trovata"? come gestire questa situazione. quindi per favore mi consigli quale sarebbe l'approccio migliore per stampare il contenuto del div nascosto nella pagina e come gestire il problema della stampante se la stampante non è collegata.

grazie

+6

Hai anche provato ad usarlo? – Jack

+0

div nascosto non stampato utilizzando il plugin http://projects.erikzaadi.com/jQueryPlugins/jQuery.printElement/ –

risposta

19

tua domanda non suona come se persino provato da soli, quindi non dovrebbe nemmeno pensare di rispondere, ma: se un div nascosto non può essere stampato con quella riga:

$('SelectorToPrint').printElement(); 

semplicemente modificarlo a:

$('SelectorToPrint').show().printElement(); 

che dovrebbe farlo funzionare in tutti i casi.

per il resto, non c'è soluzione. il plug-in aprirà la finestra di dialogo per la stampa dove l'utente deve scegliere la sua stampante. semplicemente non puoi scoprire se una stampante è collegata con javascript (e tu (quasi) non puoi stampare senza la finestra di dialogo di stampa, se ci stai pensando).

NOTA:

L'oggetto $.browser è stato rimosso nella versione 1.9.x di jQuery rendendo questa libreria non supportata.

0

C'è un modo per usarlo con un div nascosto ma devi lavorare di più con la funzione printElement() e css.

Css:

#SelectorToPrint{ 
    display: none; 
} 

Script:

$("#SelectorToPrint").printElement({ printBodyOptions:{styleToAdd:'padding:10px;margin:10px;display:block', classNameToAdd:'WhatYouWant'}}) 

Ciò ignorare il display: none nella nuova finestra si apre e il contenuto verrà visualizzato nella pagina di anteprima di stampa e il div sul tuo sito rimane nascosto.

28

preferisco questo, ho provato e il suo lavoro

https://github.com/jasonday/printThis

$("#mySelector").printThis(); 

o

$("#mySelector").printThis({ 
*  debug: false,    * show the iframe for debugging 
*  importCSS: true,   * import page CSS 
*  printContainer: true,  * grab outer container as well as the contents of the selector 
*  loadCSS: "path/to/my.css", * path to additional css file 
*  pageTitle: "",    * add title to print page 
*  removeInline: false  * remove all inline styles from print elements 
* }); 
0

È possibile seguire questi passaggi:

  1. avvolgere il div si desidera stampare in un altro div.
  2. imposta lo stato di visualizzazione del wrapper su none in css.
  3. mantenere il div che si desidera stampare lo stato di visualizzazione come blocco, in ogni caso sarà nascosto poiché il suo genitore è nascosto.
  4. semplicemente chiamano $('SelectorToPrint').printElement();
1

ecco un soluzioni JQuery & JavaScript per stampare div come esso stili (con i CSS interni ed esterni)

$(document).ready(function() { 
      $("#btnPrint").live("click", function() {//$btnPrint is button which will trigger print 
       var divContents = $(".order_summery").html();//div which have to print 
       var printWindow = window.open('', '', 'height=700,width=900'); 
       printWindow.document.write('<html><head><title></title>'); 
       printWindow.document.write('<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" >');//external styles 
       printWindow.document.write('<link rel="stylesheet" href="/css/custom.css" type="text/css"/>'); 
       printWindow.document.write('</head><body>'); 
       printWindow.document.write(divContents); 
       printWindow.document.write('</body></html>'); 
       printWindow.document.close(); 

       printWindow.onload=function(){ 
       printWindow.focus();           
       printWindow.print(); 
       printWindow.close(); 
       } 
      }); 
}); 

Questo stamperà il tuo div in una nuova finestra.

tasto per attivare la manifestazione

<input type="button" id="btnPrint" value="Print This">