11

Il problema è che l'utente deve scorrere verso il basso per visualizzare tutto il contenuto all'interno del corpo modale. Tuttavia, quando stampo il modale, l'unica parte stampata è la parte visibile. Voglio che l'intero contenuto del modale sia stampato. Ho provato ogni pezzo di codice nella pagina seguente e nessuno di loro stampa l'intero modal.Come stampare l'intero modal bootstrap in cui il contenuto del corpo modale viene scostato dalla vista

Twitter Bootstrap: Print content of modal window

+0

Hai provato ad aumentare l'altezza della modal per adattarne l'intero contenuto prima della stampa? In alternativa, potresti provare a cambiare la sua impostazione 'overflow-y' in' overflow-y: visible'. –

+0

@ Roamer-1888 Sì, l'ho provato dopo averlo suggerito, ma non riuscivo a stampare il contenuto che era ancora fuori vista solo senza la barra di scorrimento ora. Mi hai messo sulla strada giusta però. Ho finito per usare il plugin printThis di Jason Ray. –

+0

Buon lavoro investigativo. Potresti postare una risposta alla tua domanda per favore e includere un link al plugin? –

risposta

13

Scarica printThis.js dal seguente link per inserire nel tuo html: https://github.com/jasonday/printThis/blob/0a7f799693af8a8303bf0b8df0efc80c2694af81/printThis.js

Avvolgere il contenuto che si desidera stampare con il seguente div. Tutto al di fuori di questo div non verrà stampato.

<div id="modalDiv"> 
    ..content to print.. 
</div> 

Chiamare il seguente jQuery per stampare tutto il contenuto compreso il contenuto che non è visualizzabile. È possibile includere i file css in un array se si dispone di più file CSS.

$("#modalDiv").printThis({ 
    debug: false,    
    importCSS: true,    
    importStyle: true,   
    printContainer: true,  
    loadCSS: "../css/style.css", 
    pageTitle: "My Modal",    
    removeInline: false,   
    printDelay: 333,    
    header: null,    
    formValues: true   
}); 
3

Penso che si può facilmente farlo con i CSS utilizzando @media print:

Se non ci si apre finestra modale bootstrap, sarà stampato il contenuto di modali (che può essere più di una pagina), in altri casi contenuto della finestra.

@media print { 
    /* on modal open bootstrap adds class "modal-open" to body, so you can handle that case and hide body */ 
    body.modal-open { 
     visibility: hidden; 
    } 

    body.modal-open .modal .modal-header, 
    body.modal-open .modal .modal-body { 
     visibility: visible; /* make visible modal body and header */ 
    } 
} 

Inoltre pulsante è possibile aggiungere il piè di pagina modale per la stampa:

<div class="modal-footer"> 
    <button type="button" class="btn btn-default" onclick="js:window.print()">print modal content</button> 
</div> 
+0

ha funzionato come un incantesimo, la maggior parte dei metodi che ho visto erano troppo per il mio caso d'uso o troppo lunghi per essere implementati! –

+0

funziona, ma viene visualizzato come impostazioni XS al posto delle impostazioni lg (viene visualizzato come una colonna per riga anziché due colonne per riga come vedo sullo schermo). C'è un modo per stampare esattamente quello che sto vedendo? –

+0

@FranciscoG Significa uno stile (ad esempio per le impostazioni lg) scritto in '@media screen' invece di' @media all' (che è il tipo @media predefinito). –

12

stava affrontando lo stesso problema con angularjs biblioteca UI bootstrap. Ho provato il collegamento fornito sopra ma senza fortuna. L'unica CSS che funziona per me quando il modale è PIU ' rispetto alla porta di vista è:

@media print { 
    .modal { 
     position: absolute; 
     left: 0; 
     top: 0; 
     margin: 0; 
     padding: 0; 
     overflow: visible!important; 
    } 
} 

Nota: position:absolute e overflow:visible sono MUST hanno. Spero che questo possa risolvere il tuo problema anche durante la stampa di angularUI-Bootstrap-Modal.

+1

Questa è l'unica cosa che ha funzionato per me. Ho provato molti jQuery e direttamente su JavaScript e molti CSS. Grazie. – johnny

+0

Soluzione seriamente bella – bkwdesign

0

@Abu Sulaiman: utilizzando questo si stampa solo la parte visualizzata nel modale. Per mostrare anche la parte nascosta, specialmente quando il tuo contenuto è in overflow, cambia lo removeInline: true esattamente come indicato di seguito. Funziona bene per me.

Scarica printThis.js dal seguente link per inserire nel tuo html: https://github.com/jasonday/printThis/blob/0a7f799693af8a8303bf0b8df0efc80c2694af81/printThis.js

Avvolgere il contenuto che si desidera stampare con il seguente div. Tutto al di fuori di questo div non verrà stampato.

..content per stampare ..

chiamare il seguente jquery per stampare tutto il contenuto compreso il contenuto che non è visualizzabile. È possibile includere i file css in un array se si dispone di più file CSS.

$("#modalDiv").printThis({ 
    debug: false,    
    importCSS: true,    
    importStyle: true,   
    printContainer: true,  
    loadCSS: "../css/style.css", 
    pageTitle: "My Modal",    
    removeInline: true,   
    printDelay: 333,    
    header: null,    
    formValues: true   
}); 
Problemi correlati