He visto esta pregunta en un par de formas diferentes en SO y en varios otros sitios web, pero la mayoría de ellos son demasiado específicos o están desactualizados. Espero que alguien pueda proporcionar una respuesta definitiva aquí sin complacer a la especulación.
¿Hay alguna manera, ya sea con CSS o JavaScript, de cambiar la configuración predeterminada de la impresora cuando alguien imprime dentro de su navegador? Y, por supuesto, por "impresiones desde su navegador" me refiero a alguna forma de HTML, no PDF o algún otro tipo de mime dependiente del complemento.
Tenga en cuenta:
Si algunos navegadores ofrecen esto y otros no (o si solo sabe cómo hacerlo para algunos navegadores), agradezco las soluciones específicas del navegador.
Del mismo modo, si conoce un navegador convencional que tiene restricciones específicas contra NUNCA hacer esto, eso también es útil, pero se agradecería una documentación bastante actualizada. (simplemente decir "eso va en contra de la política de seguridad de XYZ" no es muy convincente cuando XYZ ha realizado cambios significativos en dicha política en los últimos tres años).
Finalmente, cuando digo "cambiar la configuración de impresión predeterminada" no quiero decir para siempre, solo para mi página, y me refiero específicamente a márgenes de impresión, encabezados y pies de página.
Soy muy consciente de que CSS ofrece la opción de cambiar la orientación de la página, así como los márgenes de la página. Una de las muchas luchas es con Firefox. Si configuro los márgenes de la página en 1 pulgada, lo AGREGA a la media pulgada que ya está en su lugar.
Tengo muchas ganas de reducir el uso de archivos PDF en el sitio de mi cliente, pero la infracción en la presentación (así como la falta de fiabilidad) son su principal preocupación.
Respuestas:
El estándar CSS permite un formato avanzado. Hay una
@page
directiva en CSS que permite algún formato que se aplica solo a los medios paginados (como el papel). Ver http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html .Lo malo es que el comportamiento en diferentes navegadores no es consistente. Safari todavía no admite la configuración del margen de la página de la impresora, pero todos los demás navegadores principales ahora lo admiten.
Con la
@page
directiva, puede especificar el margen de la impresora de la página (que no es lo mismo que el margen CSS normal de un elemento HTML):Esto no funciona en Firefox 3.6 , IE 7 , Safari 5.1.7 o Google Chrome 4.1 .
Establecer el margen @page tiene efecto en IE 8 , Opera 10 , Google Chrome 21 y Firefox 19 .
Aunque los márgenes de la página están configurados correctamente para su contenido en estos navegadores, el comportamiento no es ideal al tratar de resolver la ocultación del encabezado / pie de página.
Así es como se comporta en diferentes navegadores:
En Internet Explorer , el margen se establece en 0 mm en la configuración de esta impresión, y si realiza la Vista previa obtendrá 0 mm por defecto, pero el usuario puede cambiarlo en la vista previa.
Verá que el contenido de la página en realidad está posicionado correctamente, pero el encabezado y el pie de página de impresión del navegador se muestran con un fondo no transparente y, por lo tanto, ocultan efectivamente el contenido de la página en esa posición.
En las versiones más recientes de Firefox , está posicionado correctamente, pero se muestran tanto el texto del encabezado / pie de página como el texto del contenido, por lo que parece una mala combinación del texto del encabezado del navegador y el contenido de su página.
En Opera , el contenido de la página oculta el encabezado cuando se utiliza un fondo no transparente en el CSS estándar y la posición del encabezado / pie de página entra en conflicto con el contenido. Muy bien, pero parece extraño si el margen se establece en un valor pequeño que hace que el encabezado sea parcialmente visible. Además, el margen de la página no está configurado correctamente.
En las versiones más nuevas de Chrome , el encabezado y el pie de página del navegador están ocultos si el margen @page está configurado tan pequeño que la posición del encabezado / pie de página entra en conflicto con el contenido. En mi opinión, así es exactamente como debería comportarse.
Entonces, la conclusión es que Chrome tiene la mejor implementación de esto con respecto a ocultar el encabezado / pie de página.
fuente
@page
márgenes y losbody
márgenes son cosas fundamentalmente diferentes: elbody
margen solo se aplica a todo el cuerpo , es decir, la parte superior de la primera página y la parte inferior de la última página. Para todas las páginas intermedias, la parte superior / inferior seguirá teniendo un margen cero.Cualquier versión reciente de Chrome y Opera, así como Firefox 48 alpha 1 y superior
Puede establecer el margen de la página en un tamaño que sea demasiado pequeño para contener el texto para deshabilitar esto (tomando prestada la respuesta de asombro ):
Para versiones de Firefox hasta 48 alfa 1
Puede agregar un
mozNoMarginBoxes
atributo a la<html>
etiqueta para evitar que se imprima la URL, los números de página y otras cosas que Firefox agrega al margen de la página.Está funcionando en Firefox 29 y en adelante. Puede ver una captura de pantalla de la diferencia aquí , o ver aquí un ejemplo en vivo.
Tenga en cuenta que el
mozDisallowSelectionPrint
atributo en el ejemplo no es necesario para eliminar el texto de los márgenes; consulte ¿Qué hace el atributo mozdisallowselectionprint en PDF.js? .Otros navegadores
Desafortunadamente, parece que no hay forma de resolver este problema en Internet Explorer, por lo que tendrá que recurrir a PDF o solicitar a los usuarios que deshabiliten los textos de margen.
Lo mismo vale para Safari; Según un comentario de @Luiz Pérez , las versiones más recientes de Safari (8, 9.1 y 10) aún no son compatibles
@page
con la supresión de textos de margen.No puedo encontrar nada en Edge y no tengo una instalación de Windows 10 disponible para probar.
fuente
<!DOCTYPE html> <html moznomarginboxes mozdisallowselectionprint>
esté configurado. Fuente:https://bug743252.bugzilla.mozilla.org/attachment.cgi?id=714383
@page{ size: auto; margin: 3mm; }
soporte de Chrome y Safari hizo una solución de navegador cruzado para mí.Como @Awe había dicho anteriormente, esta es la solución, ¡¡se confirma que funciona en Chrome !!
Solo asegúrate de que ESTÁ DENTRO de las etiquetas principales:
fuente
padding: 0.25in 0.5in;
los estilos de carrocería para tener los márgenes exactos que necesito para una impresión bonita y limpia. Trabajando en Chrome v25, y afortunadamente para este proyecto en particular, podemos pedir a los usuarios finales que elijan entre un par de navegadores modernos.Tengo una solicitud similar de un cliente que desea eliminar el encabezado, los números de página y el pie de página html. En este caso, el cliente presenta una página HTML que puede funcionar como un certificado formal. La URL, la página y el encabezado agregados son irrelevantes y conducen a un producto final menos que agradable. De alguna manera, solo parece barato.
Medios = Imprimir no ha podido desactivar estos valores predeterminados del navegador. La única solución es decirle al usuario que haga clic en el botón "Engranaje" y active / desactive esos elementos. En serio, no tenía idea de que podría hacer eso durante 20 años (¿y creemos que el usuario típico tendrá una pista para hacer clic en el botón de alternar?).
Si CSS admite Media = Print, debería admitir la capacidad de controlar toda la experiencia de impresión del usuario final. Aprecio que los navegadores proporcionen los campos agregados, pero, por qué no permitir que CSS controle la experiencia de impresión general, si eso es lo que se desea. ¡Una solución del 90% podría ser del 100% con tres campos más! Un simple:
bastaría.
Nuevamente, no es cuestión de si el usuario final quiere o no imprimirlo (tal vez su cliente es muy privado y no quiere URL impresas flotando. ¿O tal vez un equipo ejecutivo usa sitios de colaboración privados?). Me alegra defender al usuario final, pero si alguien busca una respuesta, no responda diciendo que es el derecho del usuario final mostrar u ocultar. A veces es el derecho del cliente pagar las facturas.
fuente
@Page
directiva para establecer el margen de la impresora (que no es lo mismo que el margen del cuerpo de la página html). Actualmente, esto es compatible con todos los principales navegadores, excepto Safari, pero la forma en que afecta el encabezado / pie de página varía. Las mejores implementaciones están en Opera y Chrome.Prueba este código, funciona 100% para mí:
FOR Landscape:
PARA Portait:
fuente
Como mencionó "dentro de su navegador" y Firefox, si está utilizando Internet Explorer, puede deshabilitar el encabezado / pie de página configurando temporalmente el valor en el registro, consulte aquí para ver un ejemplo. AFAIK No he oído hablar de una forma de hacer esto en otros navegadores. Las respuestas de Daniel y Mickel parecen colisionar entre sí, supongo que podría haber una configuración similar en algún lugar del registro para que Firefox elimine los encabezados / pies de página o los personalice. ¿Lo haz revisado?
Espero que esto ayude y felices fiestas, Saludos cordiales, Tom.
fuente
@page margin: 0mm ahora funciona en Firefox 19.0a2 (2012-12-07).
fuente
Resolví mi problema usando algunos CSS en la página web.
fuente
Esto funcionó para mí con un margen de aproximadamente 1 cm
fuente