2012-01-11 76 views
5

Tengo un sitio web donde los usuarios hacen clic en un botón de leer más para que puedan ver el resto de la información en la página. Tengo curiosidad de cómo podría hacerlo para que los usuarios no tengan que imprimir cada página por separado. Me gustaría poder hacerlo para poder tener un script que imprima las páginas relacionadas. Si alguien pudiera ayudarme y señalarme en la dirección correcta, sería muy apreciado. Necesito que esta funcionalidad funcione en todos los navegadores.Imprimir varias páginas con Javascript

Gracias

+2

Reemplace el "botón de leer más" con la barra de desplazamiento integrada en el navegador. – Quentin

Respuesta

3

Lo que necesitará para lograr esto es una hoja de estilos que utiliza estilos de medios. Básicamente es como tener dos hojas de estilo separadas; uno para imprimir y otro para ver. Para conservar el ancho de banda, deje printarea en blanco hasta que se realice la solicitud. En el evento de solicitud complete el printarea con toda la impresión que tiene que hacer. Sugeriría que veas en jQuery y sus peticiones de carga y ajax para esto.

@media screen 
    { 
    #screenarea 
     { 
     display: block; 
     } 
    #printarea 
     { 
     display: none; 
     } 
    } 
@media print 
    { 
    #screenarea 
     { 
     display: none; 
     } 
    #printarea 
     { 
     display: block; 
     } 
    } 
0

Mi instinto me dijo por primera vez que se requeriría una solución basada en el servidor, ya que la función window.print sólo imprime lo que hay en el documento actual, y que usted debe escribir código de servidor para producir una página web que consiste en todas las páginas que desea imprimir, e invoque window.print desde esa página.

Pero podría hacer que jQuery trabaje para usted, descargando las páginas que se van a imprimir usando la función .load, y luego de cargar todas las páginas, invoque window.print. Si no puede usar jQuery por alguna razón, puede escribir toda la plomería usando XHR.

Es difícil proporcionar una respuesta más detallada sin tener ninguna información sobre la estructura de su aplicación web.

0

En En general, no usaría JavaScript para acceder a múltiples páginas e imprimirlas. (Si es posible, parece que sería un hack)

En su lugar, es probable que desee tener una página que contenga toda la información para imprimir, estilo CSS para printability, que el usuario vería y podría imprimir. (En este caso, puede usar JavaScript fácilmente para iniciar la acción de impresión.)

Quizás un enlace "imprimir todo" que dirige al usuario a una página (o abre una página en un nuevo target) que contiene toda la información ¿para imprimir?

Incluso podría dar un paso más y hacerlo un poco más dinámico. Tal vez tenga casillas de verificación al lado de los títulos de cada sección de información y un botón para "imprimir seleccionados" que publicaría las selecciones en el servidor y mostraría solo la información seleccionada a la página "imprimir todo".

Siento que, como usuario, esto se ajustaría más a least astonishment que algo que imprime cosas que ni siquiera descargué en primer lugar (donde también corre el riesgo de enviar demasiado a la impresora de un usuario y desperdiciando sus recursos).

Editar:

Otro enfoque que se me acaba de ocurrir. ¿Todo el contenido debe estar en páginas separadas en primer lugar? Tal vez simplemente coloque el contenido en div s que están ocultos de forma predeterminada, y el enlace "leer más" muestra el div asociado. Entonces, todo lo que necesita para la capacidad de impresión es el estilo de medios CSS antes mencionado. Al visualizar en el navegador, pueden expandir/contraer secciones de información individualmente, pero cuando se imprime la página, todo se expande.

0

Después de tener todo su contenido en una sola página web (usando ya sea por inyección o un proceso de servidor), el formato de páginas utiliza los atributos de CSS para la impresión @media, por ejemplo:

@media print { 
    h1 {page-break-before: always;} 
} 

Otros atributos son "página- break-after "y" page-break-inside ", el último de los cuales ayuda a evitar interrupciones en el contenido.

Cuestiones relacionadas