¿Es posible imprimir páginas HTML con encabezados y pies de página personalizados en cada página impresa?
Me gustaría agregar la palabra "NO CLASIFICADO" en rojo, Arial, tamaño 16pt en la parte superior e inferior de cada página impresa , independientemente del contenido.
Para aclarar, si el documento se imprimió en 5 páginas, cada página debe tener el encabezado y pie de página personalizados.
¿Alguien sabe si esto es posible usando HTML / CSS?
pisition: fixed
y lasthead tbody tfoot
técnicas tienen desventajas, por lo que debe combinarlas, lea más aquí .Respuestas:
Si toma el elemento que desea que sea el pie de página y lo configura en posición: fijo e inferior: 0, cuando se imprima la página, repetirá ese elemento en la parte inferior de cada página impresa. Lo mismo funcionaría para un elemento de encabezado, solo establece top: 0 en su lugar.
Por ejemplo:
CSS:
fuente
Creo que la respuesta correcta es que HTML 5 y CSS3 no tienen soporte para imprimir encabezados y pies de página en los
print
medios.Y si bien puede simularlo con:
cada uno tiene errores que les impiden ser la solución general ideal.
fuente
@footer
concontent:"stuff"
o por igual?Pasé la mejor parte de mi día ideando una solución que realmente funcionó para mí y pensé que compartiría lo que hice. El problema con las soluciones anteriores que estaba teniendo era que todos los elementos de mi párrafo se superpondrían con el pie de página que quería al final de la página. Para evitar esto, utilicé el siguiente CSS:
El
page-break-inside
parap
ycontent-block
fue crucial para mí. Cada vez que tengo unp
seguimientoh*
, los envuelvo a ambosdiv class = "content-block">
para asegurarme de que permanezcan juntos y no se rompan.Espero que alguien encuentre esto útil porque me tomó alrededor de 3 horas descubrirlo (también soy nuevo en CSS / HTML, así que eso es todo ...)
EDITAR
Por una solicitud en los comentarios, estoy agregando un documento HTML de ejemplo. Deberá copiar esto en un archivo HTML, abrirlo y luego elegir imprimir la página. La vista previa de impresión debería mostrar esto funcionando. Funcionó en Firefox e IE por mi parte, pero Chrome hizo que la fuente fuera lo suficientemente pequeña como para caber en una página, por lo que no funcionó allí.
fuente
He estado buscando una solución durante años y encontré esta publicación sobre cómo imprimir un pie de página que funciona en varias páginas sin superponer el contenido de la página.
Mi requisito era IE8, hasta ahora he descubierto que esto no funciona en Chrome. [ actualización ] A partir del 1 de marzo de 2018, también funciona en Chrome
Este ejemplo usa tablas y el elemento tfoot configurando el estilo css:
fuente
La solución mágica es realmente poner todo en una sola tabla.
thead : esto es para el encabezado repetido.
tfoot : el pie de página repetido.
tbody : el contenido.
y hacer un solo tr, td y poner todo en un div
CÓDIGO ::
extra : para evitar la superposición de varias páginas. me gusta:
lo que da como resultado un desbordamiento que hará que las cosas se superpongan con el encabezado dentro de los saltos de página.
entonces >> uso:
page-break-inside: avoid !important;
con esta clasearticle
.bastante simple, espero que esto te dé el mejor resultado que deseas.
atentamente. ;)
fuente
A partir de esta pregunta , agregue los siguientes estilos a una hoja de estilo de solo impresión. Esta solución funcionará en IE y Firefox, pero no en Chrome (a partir de la versión 21):
fuente
Use saltos de página para definir los estilos en CSS:
Luego agregue el marcado en el documento en los lugares apropiados:
Referencias
CSS Paged Media: Saltos de página
MDN: salto de página antes
MDN: descanso antes
Diseño de columnas múltiples
Impresión XHTML: segunda edición
Webkit Bug 5097: CSS2 page-break-after no funciona
Preguntas frecuentes sobre HTML de impresión: ¿El programa respetará los estilos CSS como el salto de página después?
Cómo lidiar con los saltos de página al imprimir una tabla HTML grande
fuente
if the document was printed onto 5 pages
should
no significadon't
.If
(solo un ejemplo) la palabraif
(solo un ejemplo) es utilizada por el OP, yif
(solo un ejemplo) el OP ya no está activo, es mejor proporcionar una respuesta específicaif
(solo un ejemplo) ya hay respuestas genéricas yif
(solo un ejemplo) ¿los lenguajes (HTML / CSS) y las especificaciones en cuestión están diseñados para evitar la indirección y simplificar la documentación ?If
(solo un ejemplo) entonces, ¿por qué? De lo contrario, ¿por qué no?Traté de pelear esta batalla inútil combinando las reglas tfoot y css, pero solo funcionó en Firefox :(. Cuando se usa CSS simple, el contenido fluye sobre el pie de página. Cuando se usa tfoot, el pie de página en la última página no se queda bien en la parte inferior Esto se debe a que los pies de página están destinados a tablas, no a páginas físicas. Probado en Chrome 16, Opera 11, Firefox 3 y 6 e IE6.
fuente
Un enfoque que solo funciona para agregar encabezados a cada página es envolver su contenido en ay
<table>
luego colocar su contenido de encabezado en una<thead>
etiqueta y su contenido en una<tbody>
etiqueta, así:Esto funciona en Chrome, no 100% seguro sobre otros navegadores.
fuente
Si puede usar javascipt, haga que el cliente se encargue de diseñar el contenido usando javascript para colocar elementos basados en el espacio disponible.
Puede usar el complemento jquery columnizer para diseñar dinámicamente su contenido en bloques de tamaño fijo y colocar sus encabezados y pies de página como parte de la rutina de representación. http://welcome.totheinter.net/columnizer-jquery-plugin/
Ver ejemplo 10 http://welcome.totheinter.net/autocolumn/sample10.html
El navegador aún agregará sus propios encabezados o pies de página si está habilitado en el sistema operativo. El diseño consistente en plataformas y navegadores probablemente requerirá CSS condicional.
fuente
Me sorprende y no me impresiona que Chrome tenga un soporte de impresión CSS tan terrible.
Mi tarea requería mostrar un pie de página ligeramente diferente en cada página. En el caso más simple, solo un capítulo y un número de página incrementales. En casos más complejos, más texto en el pie de página, por ejemplo, varias notas al pie de página, lo que podría expandirlo en tamaño, haciendo que lo que está en el área de contenido de esa página se reduzca y parte de él vuelva a la página siguiente.
La impresión CSS no puede resolver esto, al menos no con el soporte de navegador de mala calidad hoy en día. Pero al salir de la impresión, CSS3 puede hacer mucho trabajo pesado:
https://jsfiddle.net/b9chris/moctxd2a/29/
SCSS:
Hay un poco más de código en el ejemplo, incluidos algunos Cat Ipsum; pero el js en uso solo está ahí para demostrar cuánto puede variar el encabezado / pie de página sin romper la paginación. La clave realmente es tomar un truco de CSS Flexbox y luego aplicarlo a una página de una altura fija conocida, en este caso, un trozo de papel tamaño carta de 8.5 "x11", con .5 "márgenes que se van
width: 7.5in
yheight: 10in
exactamente. Una vez que se le dice al contenedor flexible de CSS sus dimensiones exactas (div.page
), es fácil hacer que el encabezado y el pie de página se expandan y se contraigan como lo hacen en la tipografía convencional.Lo que queda es fluir el contenido de la página cuando el pie de página, por ejemplo, crece a 8 notas al pie no 3. En mi caso, el contenido es lo suficientemente fijo como para no tener que preocuparme, pero estoy seguro de que hay una manera para hacerlo. Un enfoque que nos viene a la mente es convertir el encabezado y el pie de página en flotantes de 100% de ancho, luego colocarlos con Javascript. El navegador manejará las interrupciones en el flujo de contenido regular por usted automáticamente.
fuente
¿Es esto algo que solo quieres imprimir? Puede agregarlo a cada página de su sitio y usar CSS para definir la etiqueta como un medio de impresión solamente.
Como ejemplo, este podría ser un encabezado de ejemplo:
Y en tu CSS, haz algo como esto:
Finalmente, para incluir el encabezado / pie de página en cada página, puede usar las inclusiones del lado del servidor o si tiene páginas generadas con PHP o ASP, simplemente puede codificarlo en un archivo común.
Editar:
Esta respuesta está destinada a proporcionar una forma de mostrar algo en la versión física impresa de un documento sin mostrarlo de otra manera. Sin embargo, tal como lo sugieren los comentarios, no resuelve el problema de tener un pie de página en varias páginas impresas cuando el contenido se desborda.
Sin embargo, lo dejo aquí en caso de que sea útil.
fuente
Si está utilizando un motor de plantillas como Asp.net Razor Engine o Angular, creo que debe volver a generar su página y dividir la página en varias páginas y luego puede marcar libremente cada página y poner el encabezado y el pie de página en el tema. Un ejemplo podría ser el siguiente:
fuente
Encontré una solución. La idea básica es hacer una tabla y en la sección de colocar los datos del encabezado en tr y mediante css force para mostrar que tr solo en impresión no en pantalla, entonces su encabezado normal debería forzarse a mostrarse solo en pantalla no impresa. 100% trabajando en muchas páginas impresas. el código de muestra está aquí
fuente
Prueba esto, para mí funciona en Chrome, Firefox y Safari. Obtendrá un encabezado y un pie de página fijos en cada página sin superponer el contenido de la página
CSS
HTML
fuente
Basado en alguna publicación, creo que
position: fixed
funciona para mí.Presione Ctrl + P en Chrome para ver el texto del encabezado y pie de página en cada página. Espero eso ayude
fuente