Tengo una tabla dinámica en mi página web que a veces contiene muchas filas. Sé que hay page-break-before
y page-break-after
propiedades de CSS. ¿Dónde los pongo en mi código para forzar el salto de página si es necesario?¿Cómo aplicar CSS salto de página para imprimir una tabla con muchas filas?
Respuesta
Usted puede usar la siguiente:
<style type="text/css">
table { page-break-inside:auto }
tr { page-break-inside:avoid; page-break-after:auto }
</style>
Consulte la especificación del W3C CSS Print Profile para más detalles.
Y también remítase al Salesforce developer forums.
Aquí se muestra un ejemplo:
a través de CSS:
<style>
.my-table {
page-break-before: always;
page-break-after: always;
}
.my-table tr {
page-break-inside: avoid;
}
</style>
o directamente sobre el elemento:
<table style="page-break-before: always; page-break-after: always;">
<tr style="page-break-inside: avoid;">
..
</tr>
</table>
Esto utiliza con éxito 4 páginas para lo que es efectivamente una tabla de 2 páginas y parece tener el mismo efecto que no tener CSS en Safari (6) y Chrome (24). – David
Dondequiera que desea aplicar un descanso, ya sea un table
o tr
, necesitas dar una clase por ej. page-break
con CSS como se mencionan a continuación:
/* class works for table row */
table tr.page-break{
page-break-after:always
}
<tr class="page-break">
/* class works for table */
table.page-break{
page-break-after:always
}
<table class="page-break">
y funcionará como lo requiere
Alternativamente, también puede tener div
estructura para la misma:
CSS:
@media all {
.page-break { display: none; }
}
@media print {
.page-break { display: block; page-break-before: always; }
}
Div :
<div class="page-break"></div>
Esto solo funciona si sabe con anticipación exactamente cuántas filas caben en una página (ya que tiene que declarar los saltos de página directamente en su marcado). Esto podría ser difícil (o imposible) si existe la posibilidad de que los datos en una fila de la tabla se envuelvan en una segunda línea. ¿Y qué hay de los múltiples tamaños de página (A4 frente a Carta de EE. UU. Frente a Legal de EE. UU.)? – aapierce
Esta solución no funcionó para mí cuando utilizo celdas de varias líneas y varias columnas. Encontré una solución a eso, sin embargo: https://stackoverflow.com/a/47498775/43615 - También se ocupa del problema @aapierce menciona. –
No se pudo hacer funcionar el 'tr' de interrupción en Chrome v64. –
He buscado una solución para esto. Tengo un sitio móvil de jquery que tiene una página de impresión final y combina docenas de páginas. He intentado todas las revisiones de arriba, pero la única cosa que podría llegar al trabajo es la siguiente:
<div style="clear:both!important;"/></div>
<div style="page-break-after:always"></div>
<div style="clear:both!important;"/> </div>
Desafortunadamente los ejemplos anteriores no funcionó para mí en Chrome.
Se me ocurrió la siguiente solución donde puede especificar la altura máxima en PX de cada página. Esto dividirá la tabla en tablas separadas cuando las filas sean iguales a esa altura.
$(document).ready(function(){
var MaxHeight = 200;
var RunningHeight = 0;
var PageNo = 1;
$('table.splitForPrint>tbody>tr').each(function() {
if (RunningHeight + $(this).height() > MaxHeight) {
RunningHeight = 0;
PageNo += 1;
}
RunningHeight += $(this).height();
$(this).attr("data-page-no", PageNo);
});
for(i = 1; i <= PageNo; i++){
$('table.splitForPrint').parent().append("<div class='tablePage'><hr /><table id='Table" + i + "'><tbody></tbody></table><hr /></div>");
var rows = $('table tr[data-page-no="' + i + '"]');
$('#Table' + i).find("tbody").append(rows);
}
$('table.splitForPrint').remove();
});
También tendrá el siguiente en la hoja de estilos
div.tablePage {
page-break-inside:avoid; page-break-after:always;
}
esto está funcionando para mí:
<td>
<div class="avoid">
Cell content.
</div>
</td>
...
<style type="text/css">
.avoid {
page-break-inside: avoid !important;
margin: 4px 0 4px 0; /* to keep the page break from cutting too close to the text in the div */
}
</style>
A partir de este hilo: avoid page break inside row of table
- 1. ¿Cómo aplicar la virtualización de filas para una tabla/lista en HTML/CSS/JS?
- 2. Cómo evitar el salto de página al imprimir listas largas
- 3. Márgenes de página para imprimir en CSS
- 4. DEVEXPRESS - xtrareport - salto de página
- 5. imprimir css: encajar en una sola página
- 6. CSS: Repetir encabezado de tabla después de salto de página (Vista de impresión)
- 7. Cómo diseñar css para imprimir una etiqueta
- 8. Crear encabezados y pies de página usando CSS para imprimir
- 9. CSS para encabezados de tabla, incluso filas impares?
- 10. Diseño de impresión CSS - Imprimir en una sola página
- 11. ¿Una tabla o muchas?
- 12. ¿Cómo mostrar solo ciertas partes con CSS para Imprimir?
- 13. Stategies para imprimir varias mesas página HTML y hacer frente a los saltos de página
- 14. Control de saltos de página CSS al imprimir en Webkit
- 15. ¿Cómo obtener una imagen de fondo para imprimir usando css?
- 16. ASP.NET: Cómo aplicar la clase CSS para una tabla generada en C# codebehind
- 17. Cómo aplicar CSS para examinar el botón
- 18. ¿Cuál es el código CSS para hacer saltos de página para imprimir páginas web?
- 19. Alternativa para el salto de página dentro: evitar
- 20. ¿La mejor manera de crear una página ASP.NET para imprimir?
- 21. cómo mostrar una tabla con cero filas en UITableView
- 22. Eliminación de muchas filas sin encerrarlos
- 23. enlace para imprimir en una página web
- 24. ¿Cómo aplicar CSS solo para Opera 11?
- 25. código EF primero insertando muchas filas
- 26. ¿Cómo puedo insertar muchas filas en una tabla MySQL y devolver las nuevas ID?
- 27. Convertir datos de muchas filas a muchas columnas
- 28. ¿Aplicar CSS solo para Safari?
- 29. ¿Puedo forzar un salto de página en la impresión HTML?
- 30. Quiero aplicar un estilo de CSS existente a todas las etiquetas de una página. ¿Cómo?
Esto no funciona para Safari (6) o Chrome (24) :( – David
debajo de la solución funciona para Safari o Chrome –
trabajo s en Chrome v30 –