2012-05-09 11 views
14

Ora sto usando xhtmlrenderer per nascondere HTML in PDF. mio Maven dependcy come segue:CSS in PDF, il css in Flying Saucer: -fs-table-paginate risultato in border-collapse: collaudo non valido

<dependency> 
     <groupId>org.mvel</groupId> 
     <artifactId>mvel2</artifactId> 
     <version>2.1.0.drools2</version> 
     <scope>compile</scope> 
     <optional>true</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.xhtmlrenderer</groupId> 
     <artifactId>core-renderer</artifactId> 
     <version>R8</version> 
     <scope>compile</scope> 
     <optional>true</optional> 
    </dependency> 
    <dependency> 
     <groupId>com.lowagie</groupId> 
     <artifactId>itext</artifactId> 
     <version>2.0.8</version> 
     <scope>compile</scope> 
     <optional>true</optional> 
    </dependency> 

Sto cercando di ripetere la testa tavolo in page.So di ogni PDF Io uso il css : table { -fs-table-paginate: paginate; } .La spiegare per il CSS è here.

-fs-table-paginate 
  • quando utilizzato con il valore (-fs-table-paginate) compagine, modifica il layout di tabella algoritmo ripetere intestazioni e piè nelle pagine successive e migliorare l'aspetto delle cellule che si rompono tutti pagine (ad esempio chiudendo e riaprendo i bordi), ma è tutto ciò che fa. Se la larghezza minima di una tabella è più ampia della pagina, verrà troncata.

  • Quando si aggiunge il css sopra i bordi della tabella sono staccati.

enter image description here

  • Prima aggiungo il css, bordi della tabella sono compressi in un'unica frontiera.

enter image description here

Quindi penso che la table { -fs-table-paginate: paginate; reso il mio tavolo border-collapse:collapse valido. Quindi, cosa posso fare per correggere il bug, far collassare i bordi della tabella?

mia app CSS per la tabella come segue

table{ 
    border:1px solid #000000; 
    border-collapse:collapse; 
    -fs-table-paginate: paginate;} 
table td{ 
    border:1px solid #000000; 
    word-wrap:break-word; 
    white-space:normal; 
    overflow:hidden; 
    text-align:left; 
    line-height:16px; 
    height:16px; 

} 
table tr{ 
    page-break-inside:avoid; 
} 
table thead tr th{ 
    background:#f2f2f2; 
    border:1px solid #000000; 
    text-align:center; 
} 

table tr th{ 
    background:#f2f2f2; 
    border:1px solid #000000; 
    text-align:center; 
} 

E quando aggiungere -fs-table-paginate: paginate; qualche volta l'intestazione della tabella sarà non normal.The intestazione sarà non essere visualizzati correttamente. E sotto tabella di intestazione aumenta una riga in più vuota .Come segue: enter image description here

Chiunque conosce le idee?

risposta

2

Sì ... hai ragione ...

border-collapse: crollo e -fs-table-paginate: paginate non possono essere utilizzate insieme. border-collapse viene reimpostato a separare quando -fs-tavolo-paginate è impostato su paginate ...

Quindi il modo migliore per implementare l'intestazione della tabella è quello di utilizzare thead ... this may help u ...

+0

ho già utilizzare il thead.Also cann't essere ripetuta la testa tabella nella pagina di ogni PDF – FishGel

9

per lo stesso problema, ho usato questa soluzione:

table { 
    -fs-table-paginate: paginate; 
    border-spacing: 0; 
} 

Ha funzionato per me, il mio thead si ripete in ogni pagina.

1

soluzione che ha funzionato per me:

Init tutti th e td uno ad uno con il set confine 0px: border: 0px;

e quindi applicare di confine in cui ne ha bisogno in questo modo:

<td style="border: 0px; border-left: 1px solid #ddd;">some texte</td>

Ovviamente lascio -fs-table-paginate: paginate; in stile tabella.

HTML Working campione: https://gist.github.com/laguiz/5509461

Ecco il risultato:

enter image description here