Imprimir en IE sin mostrar cuadro de diálogo de impresora.

jueves, 22 de marzo de 2012
Publicado por Ivan 6 comentarios

Primero que nada decir que este problema me surgió particularmente para poder imprimir en un punto de autoatención. En él se abre una navegador donde se muestra una página con las opciones, y se mandaría a imprimir un número o algo a la impresora. Cuando uno manda a imprimir en javascript con el clásico window.print() se levanta el cuadro de diálogo de la impresora para seleccionar las opciones para realizar la impresión. Y obviamente en este caso sería muy feo mostrar esa ventana al usuario y darle la opción de escoger qué hacer. Por eso lo primero que pillé por ahí fué una opción para firefox, entrando a la configuración de este se podía habilitar un modo de impresión “silencioso” donde no se muestra el diálogo de impresión. Hasta ahí todo bien, pero luego surgió el inconveniente de que debía usarse Internet Explorer, y no Firefox.

El caso es que luego de mucho investigar no pude dar con una solución satisfactoria, hasta que pillé el siguiente código que se pone en la misma página HTML:

<script language='VBScript'>
Sub imprimir()
       OLECMDID_PRINT = 6
       OLECMDEXECOPT_DONTPROMPTUSER = 2
       OLECMDEXECOPT_PROMPTUSER = 1
       call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)
End Sub
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>"
</script>

Y luego, es cosa de llamar a la función imprimir(); desde javascript. Y funciona excelente!!. Así que ahí queda el dato por si a alguien le sirve, y espero que así sea.

Revalidar variables de $_POST a local.

miércoles, 21 de marzo de 2012
Publicado por Ivan 0 comentarios

En realidad este problema surgió en aquellos años donde la nueva versión 4.2 de PHP decidió traer por defecto el parámetro register_globals desactivado. Esto significó una gran mejora en seguridad, un gran problema para las aplicaciones que se colgaban de esta “funcionalidad” de php, y una buena cantidad de pitutos para solucionar esto.

Resulta que a día de hoy aún me aparecen de vez en cuando este tipo de trabajos, y de primera me daba el trabajo de explorar las variables que se necesitaban para entonces validarlas una por una. Pero recordé que habia un pequeño código que permite revalidar estas variables del $_POST en forma local nuevamente de forma fácil, así que para quién le sirva y para recordarlo personalmente igual de vez en cuando, el código es este:

if ($_POST) {
  foreach ($_POST as $key => $value) {
    $$key=$value;
  }
}

Lo que hace este código es que revisa todas las variables definidas en el $_POST, y crea las variables definidas en este arreglo en forma local con el mismo nombre con el cuál se pasó a este arreglo.

Y eso sería!. Espero que les sirva. Nos vemos!