2014-07-09 10 views
15

Incorporiamo wkhtmltopdf (0.12.1) in un'applicazione Java, utilizzando stdin e stdout per input/output. Vogliamo più intestazioni (diverse) nel nostro PDF, quindi invece di usare l'opzione --header-html usiamo un thead, che viene ripetuto su diverse pagine. Ecco un piccolo esempio HTML:wkhtmltopdf che ripete intestazioni di testate che si sovrappongono di contenuto

<!DOCTYPE html> 
<html> 
<body> 
    <table style="page-break-after: always;"> 
     <thead> 
      <tr> 
       <th>My first header</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>First content</td> 
      </tr> 
     </tbody> 
    </table> 
    <table> 
     <thead> 
      <tr> 
       <th>My second header</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td>Second content</td> 
      </tr> 
     </tbody> 
    </table> 
</body> 
</html> 

Fin qui tutto bene. I problemi sorgono quando il contenuto si estende su più pagine. L'intestazione viene quindi visualizzata in cima al contenuto, sovrapponendola. Esempio html e PDF. Si noti che la seconda intestazione viene visualizzata correttamente, dal momento che lo tr occupa solo una pagina.

Altre persone hanno avuto problemi simili. Esistono alcuni accorgimenti per questo quando si utilizza l'opzione --header-html, ad esempio l'aggiunta di --header-spacing o --margin-top, ma queste opzioni non hanno alcun effetto sul ripetuto thead. Qualche idea?

+2

Questo è un problema noto con wkhtmltopdf, vedi [numero 1524] (https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1524). – ashkulz

risposta

5

risolvere questo problema aggiungendo il seguente css.

tr { 
     page-break-inside: avoid; 
     } 
+0

Questa soluzione ha funzionato per me –

25

ho risolto con queste regole tre css:

thead { display: table-header-group; } 
tfoot { display: table-row-group; } 
tr { page-break-inside: avoid; } 
+0

Abbiamo avuto un'intestazione multi-linea complessa con colspans e spazipiatti multipli, e questa soluzione ha funzionato perfettamente per noi. – Sayyid

+0

grazie mille !! Ho avuto un problema con questo bug per molto tempo, e questa soluzione ha funzionato perfettamente nel mio PDF – Alfchee

2

ho trovato tr { page-break-inside: avoid; } lavorato a un certo punto, ma non quando i miei intestazioni attraversato più righe. Dal momento che volevo mantenere la mia sezione thead, la mia soluzione era di cambiare la ripetizione.

thead, tfoot { 
    display: table-row-group; 
} 
+1

Questo ha fatto il lavoro per me! – sattu

Problemi correlati