working page not inside example ejemplo before after html css printing printing-web-page

html - not - Page-break-inside: evita equivalentes para Firefox y/o IE



page-break-after not working (4)

Entiendo que el CSS dentro de un salto de página page-break-inside:avoid instrucciones debe evitar un salto de página dentro de un div cuando se imprime un documento HTML. A través de la búsqueda en Internet, he encontrado que solo es compatible con Opera e IE8. ¿Existe alguna solución alternativa que me permita evitar saltos de página en Firefox (3.6) o versiones de IE inferiores a 8?


¿Qué tal si solo coinciden todos los elementos dentro de tu elemento, excepto los primeros, y no los rompas antes?

#yourelement *+*{ page-break-before: avoid; }



Para todo lo que no sea Firefox,

.dontsplit { border: 2px solid black; page-break-inside: avoid; }

trabajará. Pero no para firefox. En Firefox, lo que tendrá que hacer es verificar la altura y luego agregar page-break-after: always; cuando sea relevante.

En promedio, el margen será de 1 pulgada en la parte superior e inferior. Entonces, para medir cuántos píxeles consumiría una página de 10 pulgadas, utilicé esto:

var pageOfPixels; (function(){ var d = document.createElement("div"); d.setAttribute("style", "height:9in;position:absolute;left:0px;top:0px;z-index:-5;"); document.body.appendChild(d); pageOfPixels = $(d).height(); d.parentNode.removeChild(d); })();

Tuve muchos divs cada uno con muchos párrafos en ellos. Entonces, lo que hice fue iterar a través de ellos, y luego comparé la altura actual de ellos en la página actual con el valor de pageOfPixels.

var currentPosition = 0; $(''.printDiv'').each(function (index, element) { var h = $(this).height(); if (currentPosition + h > pageOfPixels) { //add page break $(''.printDiv'').eq(index - 1).css("page-break-after", "always"); currentPosition = h; } else { currentPosition += h; } });

Esto me funcionó en Firefox.