2012-06-22 16 views
12

El siguiente CSS afecta si una página se imprime en vertical u horizontal de forma predeterminada.¿Puede JavaScript cambiar el valor de @page CSS?

@page { 
    size: landscape; 
} 

que se dan cuenta que esto sólo funciona en un conjunto muy limitado de los navegadores, y que el usuario puede anularlo. Esta bien; Solo estoy tratando de proporcionar un buen valor predeterminado.

Esto funciona bien como un valor estático en CSS, pero me gustaría cambiar dinámicamente entre portrait & landscape en función de las opciones del usuario. ¿Es posible usar JavaScript para cambiar este valor?

+0

posible duplicado de [opciones Desactivación de impresión del navegador (cabeceras, pies de página, márgenes) de la página?] (Http: // stackoverflow.com/questions/1960939/disabling-browser-print-options-headers-footers-margins-from-page) –

+0

@ J-16SDiZ: No lo creo; Eché un vistazo a esa pregunta y no veo nada sobre cómo cambiar dinámicamente la configuración. – DNS

+0

@BNL: No mucho; Pasé un tiempo mirando el DOM para ver dónde podía acceder a esta propiedad, pero no pude encontrar nada. Pensé un poco en cambiar la hoja de estilo en sí, vagamente en la línea de la respuesta de jasssonpet, pero eso me pareció problemático en ese momento. – DNS

Respuesta

16

Una forma sencilla es crear un estilo diferente para @ página y cambiarlo:

var cssPagedMedia = (function() { 
    var style = document.createElement('style'); 
    document.head.appendChild(style); 
    return function (rule) { 
     style.innerHTML = rule; 
    }; 
}()); 

cssPagedMedia.size = function (size) { 
    cssPagedMedia('@page {size: ' + size + '}'); 
}; 

cssPagedMedia.size('landscape'); 
+1

Normalmente espero unos días para marcar algo como correcto, en caso de que alguien más entregue más información, pero este es un enfoque bueno y sensato que simplemente funciona; gracias. – DNS

+0

Esto es asombroso. – CrazyTim

Cuestiones relacionadas