Foros del Web » Programando para Internet » Javascript »

Impresion De Archivos Externos Casi Solucionado

Estas en el tema de Impresion De Archivos Externos Casi Solucionado en el foro de Javascript en Foros del Web. No soy un "hacedor" de código javascript, pero si un buen lector del mismo, necesitaba solucionar un problemilla referido a imprimir varios archivos externos, y ...
  #1 (permalink)  
Antiguo 12/07/2003, 05:43
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
Impresion De Archivos Externos Casi Solucionado

No soy un "hacedor" de código javascript, pero si un buen lector del mismo, necesitaba solucionar un problemilla referido a imprimir varios archivos externos, y la verdad después de una gran búsqueda en estos foros y otros sitios de internet no he encontrado nada.

Como dije lo mio no es hacer código, sino leerlo y he llegado a la siguiente conclusión, que funciona, tras modificar el script de redimensionar fotos de tunait que se encuentra en las faqs de este mismo foro:
Código PHP:

//script por Tunait
var ventana
var cont=0
var titulopordefecto "IMPRIMIENDO ARCHIVO" //texto por defecto a mostrar en la barra de título en caso de omitir el argumento titulo

function afoto(cual,titulo)
{
if(
cont==1){ventana.close();ventana=null}
if(
titulo==null){titulo=titulopordefecto}
ventana=window.open('','ventana','resizable=yes,scrollbars=auto,height=300,width=300')
ventana.document.write('<html><head><title>' titulo '</title><link rel="alternate" media="print" href="' cual '"></head><body onload="window.print();" onUnload="opener.cont=0">')
ventana.document.close()
cont++

para llamarlo:
Código PHP:
<a href="#" onClick="afoto('texto.txt');return false"><img src="1p.jpg"></a>

<
a href="#" onClick="afoto('2.jpg');return false"><img src="2p.jpg"></a
Ahora el problema es conseguir que tras unos segundos se cierre la ventana, ya he probado varias opciones, pero el problema es que el popup se convierte en ventana padre (creo) y pide confirmación para cerrarse.

Alguna sugerencia??

Por cierto, una vez dada esta posibilidad creo que algun hacha del javascript de los que hay por aquí podría reescribir este script correctamente, ya que como he dicho es sólo una adaptación y posiblemente (estoy seguro) es mejorable en un 100%.

Como veis la idea es simple y funciona que yo haya testado con jpg y txt, pero casi seguro que también funciona con otros formatos de archivo como doc, pdf, etc...
Un saludo
  #2 (permalink)  
Antiguo 12/07/2003, 12:11
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
Sigo buscando...

He probado con casi todos los script para cerrar ventanas que conozco y algunos que desconocia, pero el resultado es negativo, he optado por lo siguiente:
introducir un meta refresh para ir a una página que se cerrara automáticamente:
El código quedaría así:
Código PHP:
//script por Tunait
var ventana
var cont=0
var titulopordefecto "IMPRIMIENDO ARCHIVO" //texto por defecto a mostrar en la barra de título en caso de omitir el argumento titulo

function afoto(cual,titulo)
{
if(
cont==1){ventana.close();ventana=null}
if(
titulo==null){titulo=titulopordefecto}
ventana=window.open('','ventana','resizable=yes,scrollbars=auto,height=300,width=300')
ventana.document.write('<html><head><meta http-equiv="Refresh" content="5; URL=cerrar.html"> <title>' titulo '</title><link rel="alternate" media="print" href="' cual '"></head><body onload="window.print();" onUnload="opener.cont=0">')
ventana.document.close()
cont++

Pero en dicha página tampoco funcionan los script que cierran ventana, creo que el fallo está en la variable cont, pero no estoy seguro, además de que me interesa mantenerla.

El único script que he visto que funciona es el siguiente:
Código PHP:
   <object id="MyControl" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" 
codebase="HHCTRL.ocx#Version=4,72,8252,0" width="115" height="21">
    <
PARAM name="Command" value="Close">
    <
PARAM name="Button" value="Text:Cerrar sin confirmación">
   </
object>
  </
form
Pero aparte de necesitar de un botón no funciona con todas las versiones de IExplorer por lo que he podido leer por aquí.

Sugerencias???

Un saludo
  #3 (permalink)  
Antiguo 13/07/2003, 06:32
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola papirpo,

la forma de cerrar una ventana es close() o self.close()

En el caso de hacerlo desde la opener sería ventana.close()

Pero si tal y como la abre, la cierra, no imprimiría nada.

Podrías pedir desde la propia popup que se cierre transcurridos x segundos o minutos.

Algo asi

//script por Tunait
var ventana
var cont=0
var titulopordefecto = "IMPRIMIENDO ARCHIVO" //texto por defecto a mostrar en la barra de título en caso de omitir el argumento titulo

function afoto(cual,titulo)
{
if(cont==1){ventana.close();ventana=null}
if(titulo==null){titulo=titulopordefecto}
ventana=window. open('','ventana','resizable=yes,scrollbars=auto,h eight=300,width=300')
ventana.document.write('<html><head><meta http-equiv="Refresh" content="5; URL=cerrar.html"> <title>' + titulo + '</title><link rel="alternate" media="print" href="' + cual + '"></head><body onload="window.print();setTimeout(\ \'close\ \',60.000)" onUnload="opener.cont=0">')
ventana.document.close()
cont++
}

con eso se cerraría la ventana al minuto de estar abierta

NOTA: los foros quitan el caracter de escape \ delante de la comilla simple así que le añadí un espacio. Recuerda quitar el espacio entre \ y '


saludos

Última edición por tunait; 13/07/2003 a las 06:34
  #4 (permalink)  
Antiguo 13/07/2003, 07:25
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 2 meses
Puntos: 2
hola!,

Cita:
Pero si tal y como la abre, la cierra, no imprimiría nada.

vaya, eso no diria yo que es cierto del todo. Por ejemplo, una vez hice una pagina en la que habia un boton. Al pulsarlo se abria un popup donde se veia el logo de la empresa para la que era la pagina. En el evento onload del codigo llamaba a la funcion imprimir:

function imprimir(){
window.print();
self.close();
}


Pues al pulsar sobre el boton, se abria la ventana, luego aparecia la ventana de configuracion de impresion de la impresa (al par de segundos), y solo cuando uno aceptaba o cancelaba en esa ventana de configuracion de la impresara se cerraba el popup. Pero aunque el popup se cerraba la impresion empezaba y seguia su curso correctamente.


Saludos


ToKaTa.
__________________

"Si pudieras volver.....¿.lo harias?"
  #5 (permalink)  
Antiguo 13/07/2003, 07:31
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
¿Sí? es posible... yo como sigo sin siquiera enchufar la impresora no lo he podido comprobar. Si es como tú dices, mejor que mejor

De todas formas hasta que no se pruebe no sabremos si imprime o no... y por cierto comprobarlo en la red.

Quizás mandando la instrucción desde la propia popup espere a iniciar la impresión para llamar a la siguiente instrucción y no importe cuándo se cierre.

Pero creo que (quizás, son todo suposiciones pues no he probado) si se llamara a cerrar desde la opener mediante ventana.close() sí que la cerraría probablemente antes de que el documento se cargara dentro de la popup y no se iniciaría la impresión.

Bueno... quien lo pruebe que nos cuente
  #6 (permalink)  
Antiguo 13/07/2003, 11:52
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
La verdad es que no sé muy bien lo que estoy haciendo, en ocasiones me encabezono en sacar algo, y aunque no estoy muy puesto, normalemente lo consigo, lo que dice tunait ya lo he probado y no me va, creo que tiene algo que ver con la configuración de la impresora, pero lo dicho no estoy seguro, al final he reescrito el script de la siguiente forma, por si a alguien le puede interesar:
Código PHP:
var ventana
function imprimir(cual)
  {

ventana=window.open('','ventana','resizable=yes,scrollbars=auto,height=150,width=300,left=100,top=50')
with (ventana.document)

    {

 
open();
 
write('<html>');
 
write('<title>');
 
write('IMPRIMIENDO ARCHIVO SOLICITADO');
 
write('</title>');
 
write('<head>');
 
write('<link rel="alternate" media="print" href="' cual '">');
 
write('</head>');
 
write('<body onload="window.print()">');
 
write('<center>');
 
write('IMPRIMIENDO EL ARCHIVO SOLICITADO');
 
write('<br><br>');
 
write('UNA VEZ CONCLUIDO EL PROCESO CIERRE ESTA VENTANA');
 
write('<br><br>');
 
write('<OBJECT id=MyControl type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" codebase="http://activex.microsoft.com/activex/controls/htmlhelp/HHCTRL.ocx#Version=4,72,8252,0"  width=100  height=100><PARAM name="Command" value="Close"><PARAM name="Text" value="Text:Cerrar ventana"></OBJECT></OBJECT>');
 
write('</center>');
 
write('</body>');
 
write('</html>');
 
close();

    }
  } 
para llamar a la función:

Código PHP:
<a href="#" onClick="imprimir('texto.txt');return false" onFocus="this.blur()"><img src="1p.jpg" width="115" height="86" alt="" style="border: 1px solid #666666"></a>
<
a href="#" onClick="imprimir('2.jpg');return false" onFocus="this.blur()"><img src="2p.jpg" width="115" height="86" alt="" style="border: 1px solid #666666"></a
A ver si alguien da con la clave porque lo que yo me doy por vencido.

Un saludo
  #7 (permalink)  
Antiguo 13/07/2003, 18:03
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 2 meses
Puntos: 2
hola!


la verdad es que a estas alturas todavia no se lo que quieres hacer . Me lo puedes explicar como si fuera medio tonto???, a ver si se me ocurre algo que te pueda servir??






ToKaTa.
__________________

"Si pudieras volver.....¿.lo harias?"
  #8 (permalink)  
Antiguo 14/07/2003, 01:33
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
Verás la idea es lo siguiente:
1.- Dar la posibilidad de imprimir varios archivos externos y no sólo uno, creo que con el tag <link rel="alternate" sólo se puede imprimir un sólo archivo (si hay alguna forma de imprimir varios archivos con dicho tag agradecería una explicación al respecto).
2.- y ya que estamos que la ventana que utilizo como intermediaria para llamar a la función print se cerrara (cosa que sencillamente no logro, y no puedo entender porque no se puede).

En fin cualquier sugerencia es bienvenida.

Un saludo
  #9 (permalink)  
Antiguo 14/07/2003, 04:22
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 2 meses
Puntos: 2
hola papirpo!

a ver, mejor vamos por partes....

Este codigo que te paso (que es practicamente lo mismo que tu tenias, escepto que en el body de la nueva ventana meto una nueva llamada) a mi me funciona. NO se si depende el explorador o no.........pero hace lo que le comentaba a tunait:

- al pulsar sobre el enlace te abre el popup
- al momento sale la ventana de impresion de tu impresora. EN mi caso no estaba configurada, pero aun asi, sale y se queda ahi hasta que le des a cancelar
- la ventana popu en ese tiempo sigue abierta detras de la de configuracion de la impresora
- solo cuando das a cancelar o a aceptar a la ventana de impresion, se cierra la ventana popu automaticamente, y al momento comienza la impresion


Código:
<html>
<head>
<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<script language="JavaScript1.2">
		var ventana;
		function imprimir(cual){

			ventana=window. open('','ventana','resizable=yes,scrollbars=auto,height=150,width=300,left=100,top=50')
			with (ventana.document){
				open();
				write('<html>');
				write('<title>');
				write('IMPRIMIENDO ARCHIVO SOLICITADO');
				write('</title>');
				write('<head>');
				write('</head>');
				write('<body onload="window.print();self.close()">');
				write('<center>');
				write('IMPRIMIENDO EL ARCHIVO SOLICITADO');
				write('<br><br>');								write('</center>');
				write('</body>');
				write('</html>');
				close();
		    }
		}
	</script>	
</head>

<body bgcolor="#FFFFFF" text="#000000">
<a href="#" onClick="imprimir('texto1.txt');">Imprimir texto1.txt</a>
</body>
</html>


Lo que no termino de entender es lo de que se puedad imprimir varios archivos externos y no solo uno.....¿¿Te refieres a por ejemplo, que un usuario pueda decir "pues quiero imprimir este, este...este no...este, y este"..........pasarles todo los nombres como parametros a la funcion imprimir separados por algun caracter especial (por ejemplo ";") y hacer un bucle que imprima los archivos seleccionados antes de cerrar la ventana??........es que no termino de entenderlo......




ToKaTa.



P.D.: aqui solo he mirado lo de cerrar la ventana, no me he metido con lo de imprimir el archivo que se le pasa....
__________________

"Si pudieras volver.....¿.lo harias?"

Última edición por ToKaTa; 14/07/2003 a las 04:24
  #10 (permalink)  
Antiguo 14/07/2003, 11:20
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
Perfecto, ahora si funciona, lo que no entiendo es en que me equivoqué ya que como dije lo había probado todo incluso el self.close(), esto del javascript es conplicado una comilla mal puesta y a tomar viento.

Respecto a lo de los navegadores sólo funciona en IE, en NetScape sólo imprime el pop up, por lo que el siguiente paso es crear el código necesario para redirigir el pop up hacia una página de advertencia, algo así como usted usa netscape por lo que tendrá que imprimir el archivo manualmente...



Gracias por todo.



------------------------------
It's only javascript but i like it
  #11 (permalink)  
Antiguo 14/07/2003, 11:27
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
Bueno contrarespuesta rápida acabo de revisar el código y me parece que he cantado victoria demasiado pronto, en el script que presentas falta la línea más importante:
Código PHP:
write('<link rel="alternate" media="print" href="' cual '">'); 
y una vez que la he incluido vuelvo a tener el mimo problema, la dichosa ventana no se cierra, sin dicha orden lo que se imprime es la propia ventana poppu, y yo lo que quiero es imprimir un archivo externo.

Pero almenos ya hemos identificado el problema, con esa linea de código no se cierra. Sin ella si........ misterios del javascript??

Un saludo
  #12 (permalink)  
Antiguo 15/07/2003, 04:57
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 2 meses
Puntos: 2
no lo entiendo .....te paso de nuevo el codigo que pa ver si esta vez te va......a mi me funciona con esa linea y to......quizas es por que teniamos el title fuera del head y eso le estaba dando "dolores de cabaeza" ...pero no se yo......

La verdad es que si no te funciona me doy a la bebida


Código:
<html>
<head>
<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<script language="JavaScript1.2">
		var ventana;
		function imprimir(cual){

			ventana=window.  open('','ventana','resizable=yes,scrollbars=auto,height=150,width=300,left=100,top=50')
			with (ventana.document){
				open();
				write('<html>');
				write('<head>');
				write('<title>');
				write('IMPRIMIENDO ARCHIVO SOLICITADO');
				write('</title>');				
				write('<link rel="alternate" media="print" href="' + cual + '">');
				write('</head>');
				write('<body onload="window.print();self.close()">');
				write('<center>');
				write('IMPRIMIENDO EL ARCHIVO SOLICITADO');
				write('<br><br>');								write('</center>');
				write('</body>');
				write('</html>');
				close();
		    }
		}
	</script>	
</head>

<body bgcolor="#FFFFFF" text="#000000">
<a href="#" onClick="imprimir('texto1.txt');">Imprimir texto1.txt</a>
</body>
</html>

Si te va ya nos metemos con lo del netscape.......y si no.....que alguien me ponga un ron!




ToKaTa.
__________________

"Si pudieras volver.....¿.lo harias?"
  #13 (permalink)  
Antiguo 15/07/2003, 06:45
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
A mi no me va, mi impresora es una epson Stylus color 685, mi IE es 5.5, "OS" Windows Millenium, en fin que la idea puede funcionar pero no cómo yo quiero, seguiré investigando a ver si saco algo, respecto a la versión de Netscape he pensado que podría ser algo así:
Código PHP:
var ventana
function imprimir(cual)

if ((
navigator.appName == "Netscape")) 

ventana=window.open('','ventana','resizable=yes,scrollbars=auto,left=0,top=0')
with (ventana.document)
    {
 
open();
 
write('<html>');
 
write('<title>');
 
write('SU NAVEGADOR NO SOPORTA ESTA OPCION');
 
write('</title>');
 
write('<head>');
 
write('</head>');
 
write('<body>');
 
write('<center>');
 
write('SU NAVEGADOR NO SOPORTA ESTA OPCION');
 
write('<br>');
 
write('<a href="javascript:window.imprnsc.print()">IMPRESION MANUAL DEL ARCHIVO</a>');
 
write('<br>');
 
write('<iframe name="imprnsc" src="' cual '" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" scrolling="auto" width="100%" height="100%"></iframe>');
 
write('</center>');
 
write('</body>');
 
write('</html>');
 
close();
    }

else

ventana=window.open('','ventana','resizable=yes,scrollbars=auto,height=150,width=300,left=100,top=50')
with (ventana.document)
    {
 
open();
 
write('<html>');
 
write('<title>');
 
write('IMPRIMIENDO ARCHIVO SOLICITADO');
 
write('</title>');
 
write('<head>');
 
write('<link rel="alternate" media="print" href="' cual '">');
 
write('</head>');
 
write('<body onload="window.print();">');
 
write('<center>');
 
write('IMPRIMIENDO EL ARCHIVO SOLICITADO');
 
write('<br><br>');
 
write('UNA VEZ CONCLUIDO EL PROCESO CIERRE ESTA VENTANA');
 
write('<br><br>');
 
write('<OBJECT id=MyControl type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" codebase="http://activex.microsoft.com/activex/controls/htmlhelp/HHCTRL.ocx#Version=4,72,8252,0"  width=100  height=100><PARAM name="Command" value="Close"><PARAM name="Text" value="Text:Cerrar ventana"></OBJECT></OBJECT>');
 
write('</center>');
 
write('</body>');
 
write('</html>');
 
close();
    }
}

En fin saludos y seguiré al lio.
  #14 (permalink)  
Antiguo 15/07/2003, 07:05
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 2 meses
Puntos: 2
pero has probado mi codigo?, es que el tuyo sigue teniendo el title fuera del head (me refiero a la ventana que se abre), y quzas eso lo este trabando...


ToKaTa.
__________________

"Si pudieras volver.....¿.lo harias?"
  #15 (permalink)  
Antiguo 15/07/2003, 09:29
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
Si lo he probado, pero no hay manera, jejeje, sé que debería funcionar sin problemas, pero al menos no lo hace para mi, seguiré dandole vueltas al coco.

Un saludo
  #16 (permalink)  
Antiguo 15/07/2003, 09:36
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 2 meses
Puntos: 2
colega, lo siento, me duele decirlo, pero tu script me gano






ToKaTa
__________________

"Si pudieras volver.....¿.lo harias?"
  #17 (permalink)  
Antiguo 15/07/2003, 14:41
 
Fecha de Ingreso: febrero-2003
Mensajes: 44
Antigüedad: 21 años, 2 meses
Puntos: 0
y a mi.. jeje, puede que lo deje tal cual si tu dices que funciona en tu ordenador, pero en el mio no, puedo dejar la orden de salir en el onload y si no funciona dar la posibilidad de salir con el script que incluyo.

De todas formas en Netscape no funciona ni para .doc, ni para .pdf
y en IExplorer no lo hace para .pdf.

Por el resto corre perfecto.

En fin puede que algún día me convierta en un buen "hacedor de código". Un saludo y gracias por todo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:35.