2016-03-21 13 views
5

Ho una tabella lunga che mostra le righe su più pagine. Alla fine di una pagina, la riga viene stampata per metà su una pagina e metà sulla pagina successiva. Come posso assicurarmi che le righe siano stampate completamente sulla nuova pagina?Page break for long table

risposta

8

proprietà CSS: page-break-inside: avoid; su HTML tr elemento lo fa.

Testato con:
wkhtmltopdf 0.12.3 previsto Linux (Ubuntu Trusty) 32-bit/64-bit built on Ubuntu 14.04.2 come previsto a: http://wkhtmltopdf.org/downloads.html#stable

Un test rapido e sporco può apparire come:

<tr style="page-break-inside: avoid;"> 
    <!-- A little border to see the result more easily --> 
    <td style="border: solid 1px blue;"> 
    Large text possibly displayed on several pages ... 
    Large text possibly displayed on several pages ... 
    Large text possibly displayed on several pages ... 
    Large text possibly displayed on several pages ... 
    </td> 
    <td>col2</td> 
    <td>col3</td> 
</tr> 

Mozilla Developer Network page-break-inside description

+1

Grazie, questo è anche utile se è necessario evitare di dividere un div a 2 pagine e rendere l'intero div nella pagina successiva. – Henry

+0

@Henry infatti secondo le specifiche CSS22 dovrebbe funzionare con elementi a livello di blocco in generale https://www.w3.org/TR/CSS22/page.html#page-breaks ma nel contesto di questa risposta per quanto riguarda wkhtmltopdf potrebbe vale la pena provarlo è supportato dal tuo caso d'uso. Vorresti fornire la versione wkhtmltopdf che avevi successo con div sarebbe utile per gli altri. –

1

Non funziona per me. Testato con wkhtmltopdf 0.12.4 Linux 64 bit. Stile applicato con

thead, 
tr, 
td, 
th { 
    page-break-inside: avoid !important; 
} 

Le file continuano a spezzarsi nel mezzo e si sovrappongono alla pagina successiva.