Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/02/2013, 08:44
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 6 meses
Puntos: 83
Respuesta: Imprimir el contenido de un DIV que mantenga los estilos

Cuando creas una nueva ventan no hereda los estilos del parent: por defecto te crea un arbol de etiquetas vacio al que puedes añadir 'cosas', y una de las cosas que debes añadir para aplicar estilos es un "link rel=styesheet" o un bloque de estilos

Código:
var ventimp=window.open(' ','popimpr');
ventimp.document.close();

var css = ventimp.document.createElement("link");
css.setAttribute("href", "estilo.css");
css.setAttribute("rel", "stylesheet");
css.setAttribute("type", "text/css");
ventimp.document.head.appendChild(css);
Solo una cosa: el appendChild funciona cuando has cerrado el arbol de tags, en el codigo cierras con 'document.close()', luego puedes añadir (modificar, quitar) lo que quieras.

Y lo otro, puedes jugar con el atributo 'media' del tag link, haces un css para display que lo tendras en la pagina normal y otro para print en el que p.ej. todos los botones pueden estar ocultos

Código:
//estilo_print.css
BUTTON {
    display:none;
}

//en la funcion imprSelec
var css = ventimp.document.createElement("link");
css.setAttribute("href", "estilo_print.css");
css.setAttribute("rel", "stylesheet");
css.setAttribute("type", "text/css");
css.setAttribute("media", "print");
ventimp.document.head.appendChild(css);
En la nueva pagina puedes poner dos link rel, uno con media=display para que el usuario vea lo que se va a imprimir, y otro con print que será el formato que saldra por la impresora.

No se si hay algo en css para que desde dentro de un mismo css se pueda orientar los estilos a diferentes media

Saludos
vosk