2012-05-09 58 views
14

Ahora estoy usando xhtmlrenderer para convertir html a PDF. Mi dependcy experto de la siguiente manera:CSS a PDF, el CSS en Flying Saucer: -fs-table-paginate resultado en border-collapse: colapso no válido

<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> 

Estoy tratando de repetir el encabezado de la tabla en page.So de cada PDF utilizo el css : table { -fs-table-paginate: paginate; } .El explicar la CSS es here.

-fs-table-paginate 
  • cuando se utiliza con el valor (-fs-table-paginate) paginar, modifica el diseño de la mesa algoritmo para repetir encabezados de tabla y pies de página en las páginas siguientes y mejorar la apariencia de las células que descomponen a través páginas (por ejemplo, al cerrar y volver a abrir las fronteras), pero eso es todo lo que hace. Si el ancho mínimo de una tabla es más ancho que la página, se cortará.

  • Cuando agregue el css anterior, los bordes de mi mesa se separarán.

enter image description here

  • Antes de añadir CSS, bordes de la tabla se colapsan en una sola frontera.

enter image description here

Así que creo que el table { -fs-table-paginate: paginate; hizo que mi mesa border-collapse:collapse válido. Entonces, ¿qué puedo hacer para corregir el error, hacer que las fronteras de la tabla colapsen?

Mi CSS aplicación de la tabla de la siguiente manera

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; 
} 

Y cuando -fs-table-paginate: paginate; añadir algún momento la cabecera de la tabla no será normal.The encabezado no se muestran correctamente. Y por debajo de la mesa cabecera aumentará una línea en blanco .Como sigue: enter image description here

Alguien sabe las ideas?

Respuesta

2

Sí ... que son correctas ...

border-collapse: colapso y fs-table-paginate: paginate no se pueden utilizar juntos. border-collapse se pone a separarse cuando fs-table-paginate se establece en paginate ...

Así que la mejor manera de poner en práctica su cabecera de la tabla es mediante el uso de la culata en T ... this may help u ...

+0

ya he utilizar el thead.Also cann't se repetirá la cabeza tabla de la página de cada PDF – FishGel

9

para el mismo problema, he utilizado esta solución:

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

Se trabajó para mí, mi thead se repite en cada página.

1

solución que funcionó para mí:

Init todo th y td uno a uno con juego de frontera para 0px: border: 0px;

y luego aplicar frontera donde los necesita como esto:

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

Por supuesto que dejé -fs-table-paginate: paginate; en estilo mesa.

de Trabajo de HTML de ejemplo: https://gist.github.com/laguiz/5509461

Aquí está el resultado:

enter image description here

Cuestiones relacionadas