Una consulta que aparece mucho en los diversos foros de Javascript pregunta cómo enviar la página directamente a la impresora sin mostrar primero el cuadro de diálogo de impresión.
En lugar de solo decirte que no se puede hacer quizás una explicación de por qué tal opción no es posible sería más útil.
Qué cuadro de diálogo de impresión aparece cuando alguien presiona el botón de impresión en su navegador o el Javascript window.print () El método que se ejecuta depende del sistema operativo y de las impresoras instaladas en la computadora.
Como la mayoría de las personas ejecuta Windows en su computadora, describamos primero cómo funciona la configuración de impresión en ese sistema operativo. Los sistemas operativos * nix y Mac difieren ligeramente en los detalles, pero en general están configurados de manera similar.
Hay dos partes en el cuadro de diálogo de impresión en Windows. El primero de ellos es parte de la API de Windows (interfaz de programación de aplicaciones). La API es un conjunto de piezas de código comunes que se encuentran en los diversos archivos DLL (Biblioteca de vínculos dinámicos) que forman parte del sistema operativo Windows. Cualquier programa de Windows puede (y debe) llamar a la API para realizar funciones comunes, como mostrar el cuadro de diálogo Imprimir, para que funcione de la misma manera en todos los programas y no tenga diferentes opciones en diferentes lugares, como la opción de impresión en DOS días del programa Print API Dialog también proporciona una interfaz común que permite que todos los programas accedan al mismo conjunto de controladores de impresora en lugar de que los fabricantes de impresoras tengan que crear un software de controlador para su impresora para cada programa individual que quisiera usarlo.
Los controladores de impresora son la otra mitad del cuadro de diálogo de impresión. Hay varios idiomas diferentes que las diferentes impresoras entienden que usan para controlar cómo se imprime la página (por ejemplo, PCL5 y Postscript). El controlador de impresora le indica a la API de impresión cómo traducir el formato de impresión interno estándar que el sistema operativo entiende al lenguaje de marcado personalizado que la impresora específica comprende. También ajusta las opciones que muestra el cuadro de diálogo Imprimir para reflejar las opciones que ofrece la impresora específica.
Una computadora individual puede no tener impresoras instaladas, puede tener una impresora local, puede tener acceso a varias impresoras en una red, incluso puede estar configurada para imprimir en PDF o archivo de impresión preformateado. Cuando se define más de una "impresora", una de ellas se designa como impresora predeterminada, lo que significa que es la que muestra sus detalles en el diálogo de impresión cuando aparece por primera vez..
El sistema operativo realiza un seguimiento de la impresora predeterminada e identifica esa impresora a los diversos programas en la computadora. Esto permite que los programas pasen un parámetro adicional a la API de impresión diciéndole que imprima directamente en la impresora predeterminada sin mostrar primero el diálogo de impresión. Muchos programas tienen dos opciones de impresión diferentes: una entrada de menú que muestra el cuadro de diálogo de impresión y un botón de impresión rápida de la barra de herramientas que se envía directamente a la impresora predeterminada.
Cuando tiene una página web en Internet que sus visitantes van a imprimir, no tiene casi ninguna información sobre las impresoras que tienen disponibles. La mayoría de las impresoras de todo el mundo están configuradas para imprimir en papel A4, pero no puede garantizar que la impresora esté configurada con ese valor predeterminado. Un país de América del Norte utiliza un tamaño de papel no estándar que es más corto y más ancho que A4. La mayoría de las impresoras están configuradas para imprimir en modo vertical (donde la dirección más estrecha es el ancho, pero algunas se pueden configurar en el paisaje donde la dimensión más larga es el ancho. Por supuesto, cada impresora también tiene diferentes márgenes predeterminados en la parte superior , la parte inferior y los lados de la página, incluso antes de que los propietarios entren y cambien todas las configuraciones para que la impresora tenga la forma que desean.
Teniendo en cuenta todos estos factores, no tiene forma de saber si la impresora predeterminada con su configuración predeterminada imprimirá su página web en A3 con márgenes insignificantes o en A5 con márgenes enormes (dejando poco más que un área del tamaño de un sello postal en el medio de la página). Probablemente pueda suponer que la mayoría tendrá un área de impresión en la página de aproximadamente 16 cm x 25 cm (más o menos 80%).
Dado que las impresoras varían mucho entre sus visitantes potenciales (¿alguien mencionó las impresoras láser, las impresoras de inyección de tinta, solo en color o en blanco y negro, calidad fotográfica, modo borrador y mucho más) no tiene forma de saber qué necesitarán hacer para imprimir fuera de su página en un formato razonable. tal vez tienen una impresora separada o un segundo controlador para la misma impresora que proporciona configuraciones totalmente diferentes específicamente para páginas web.
Luego, viene el asunto de lo que pueden querer imprimir. ¿Quieren la página completa o han seleccionado solo una parte de la página que desean imprimir? Si su sitio usa marcos, ¿quieren imprimir todos los marcos de la forma en que aparecen en la página, quieren imprimir cada marco por separado o simplemente quieren imprimir un marco específico??
La necesidad de responder a todas estas preguntas hace que sea casi esencial que el cuadro de diálogo de impresión aparezca cada vez que quieran imprimir algo para que puedan asegurarse de que la configuración sea correcta antes de presionar el botón de impresión. La mayoría de los navegadores también ofrecen la posibilidad de agregar un botón de "impresión rápida" a una de las barras de herramientas del navegador para permitir que la página se imprima en la impresora predeterminada utilizando la configuración predeterminada del navegador en cuanto a qué se imprimirá y cómo.
Los navegadores no hacen que esta multitud de configuraciones de navegador e impresora estén disponibles para Javascript. Javascript se ocupa principalmente de modificar la página web actual y, por lo tanto, los navegadores web brindan información mínima sobre el navegador en sí y casi ninguna información sobre el sistema operativo disponible para Javascript porque Javascript no necesita saber esas cosas para realizar esas cosas que Javascript es destinado a hacer.
La seguridad básica dice que si algo como Javascript no necesita saber sobre el sistema operativo y la configuración del navegador para manipular la página web, entonces no se debe proporcionar esa información. No es que Javascript deba cambiar la configuración de la impresora a los valores apropiados para imprimir la página actual porque no es para eso que sirve Javascript, ese es el trabajo del diálogo de impresión. Por lo tanto, los navegadores solo ponen a disposición de Javascript aquellas cosas que Javascript necesita saber, como el tamaño de la pantalla, el espacio disponible en la ventana del navegador para mostrar la página y cosas similares que ayudan a Javascript a determinar cómo se presenta la página. La página web actual es la única preocupación de Javascript.
Las intranets son, por supuesto, una cuestión completamente diferente. Con una intranet, sabe que todas las personas que acceden a la página utilizan un navegador específico (generalmente una versión reciente de Internet Explorer) y tienen una resolución de pantalla específica y acceso a impresoras específicas. Esto significa que tiene sentido en una intranet poder imprimir directamente en la impresora sin mostrar el cuadro de diálogo de impresión porque la persona que escribe la página web sabe en qué impresora se imprimirá.
Por lo tanto, el sustituto de Internet Explorer para Javascript (llamado JScript) tiene un poco más de información sobre el navegador y el sistema operativo que Javascript mismo. Las computadoras individuales en la red que ejecutan la intranet pueden configurarse para permitir el JScript window.print () comando escribir directamente a la impresora sin mostrar el cuadro de diálogo de impresión. Esta configuración debería configurarse individualmente en cada computadora cliente y está mucho más allá del alcance de un artículo sobre Javascript.
Cuando se trata de páginas web en Internet, no hay forma de que pueda configurar un comando Javascript para enviarlo directamente a la impresora predeterminada. Si sus visitantes desean hacerlo, deberán configurar su propio botón de "impresión rápida" en la barra de herramientas de su navegador.