Este es un tutorial para el amigo Jonathan de México que nos hace llegar la siguiente duda de como imprimir en Flash 8 usando la Clase PrintJob. A esto sumarle la posibilidad de poder imprimir los frames determinados de una película cargada dinámicamente ya sea por LoadMovie o MovieClipLoader y así también como detectar la orientación y controlar la salida de impresión.
Palabras claves usadas: PrintJob – orientation – addPage
Jonathan te recomiendo que en la ayuda de flash leas esas palabras claves asi aprendes un poquito mas.
- //acción del botón
- imprimir_btn.onRelease = function() {
- //llamamos a la fucion imprimir
- imprimir();
- };
- //la función imprimir llama a cargar Impresora
- //lo hago así si es que quieren desencadenar otros eventos cuando llaman a imprimir
- function imprimir() {
- cargarImpresora();
- }
- //
- function cargarImpresora() {
- //cantidad de páginas que vamos a imprimir
- var cantPaginas = 4;
- //creamos un nuevo objeto para controlar a la impresora
- var my_pj:PrintJob = new PrintJob();
- //abrimos la ventana donde nos muestra nuestras impresoras instaladas
- if (my_pj.start()) {
- //aquí que si nuestra impresora esta con la orientación
- //del papel horizontal, que haga lo siguiente
- if (my_pj.orientation == "landscape") {
- //que rote nuestro gráficos
- contenedor_mc._rotation = -90;
- //que cargue las paginas a la memoria de la impresora
- for (var i = 0; i<cantPaginas; i++) {
- //AQUI AGREGAMOS LAS PAGINAS A IMPRIMIR
- //contenedor_mc nombre de la película a imprimir
- //{xMin:0, xMax:599, yMin:0, yMax:900} espacio de impresión
- //null no en modo biTmap
- //i+1 las paginas que queremos imprimir, como es un for el valor i+1 van a ser: 1,2,3 y 4
- //estos últimos son el numero de frame de la película contenedor_mc.
- my_pj.addPage("contenedor_mc", {xMin:0, xMax:599, yMin:0, yMax:900}, null, i+1);
- }
- } else {
- //si el papel es vertical hace esto pero sin rotar
- contenedor_mc._rotation = 0;
- for (var i = 0; i<cantPaginas; i++) {
- my_pj.addPage("contenedor_mc", null, null, i+1);
- }
- }
- // imprimimos
- my_pj.send();
- }
- //eliminamos nuestro trabajo de impresión
- delete my_pj;
- }
- //creamos una película que levantara nuestra hojas a imprimir, en el level 20
- this.createEmptyMovieClip("contenedor_mc", 20);
- //cargamos el swf que tiene nuestras hojas a imprimir
- contenedor_mc.loadMovie("imprimible.swf");
- //NOTA: COMO PUEDEN VER EN EL EJEMPLO SOLO SE VE EL BOTON, NO SE VEN
- //LAS HOJAS A IMPRIR, LO QUE HICE FUE QUE EN LAS HOJAS A IMPRIMIR, EN
- //EST CASO 4 PUSE 5 FRAMES, LOS PRIMEROS CUATROS CON LOS ELEMENTOS A IMPRIMIR
- //Y EL ULTIMO SIN NADA, Y AL PRINCIPIO UN GOTOANDSTOP AL ULTIMO FRAME DE LAS
- //HOJAS A IMPRIMIR, POR ESO CUANDO CARGA NO MUESTRA NADA, PERO AL IMPRIMIR RECORRE
- //EN ESTE CASO LOS PRIMEROS 4 FRAMES QUE NECESITO IMPRIMIR.
9 octubre, 2007 at 10:20 am
Hola, estuve viendo la ayuda para la impresion, queria saber si como puedo hacer para:
Imprimir en el frame que estoy, todas las capas, todo lo que se ve.
Con este ejemplo al parecer puedo imprimir OTRO swf, pero no puedo hacer que el imprima MI FRAME, en el que esto…
Saludos
Jorge
22 octubre, 2007 at 2:48 pm
Muchas gracias por el codigo, me resolvio totalmente mi problema, esta muy bien explicado. Eres muy amable. Muchas gracias por haberlo subido a la web!!!!
10 diciembre, 2007 at 3:45 pm
Tengo una duda de que manera puedo hacer para que al mandar a imprimir no me salga la caja de dialogo d ela impresora sino que imprima de una vez o directamente sin preguntar?
Agradeceria la respuesta
Gracias
JHAMILLE
23 abril, 2008 at 8:52 pm
Una consulta como puedo unir una o barias escenas sin utilizar botones
16 junio, 2008 at 3:49 pm
Si quieres que se imprima todo los que se “ve” deberás cambiar algunos datos. En concreto deberás modificar “contenedor_mc” por _root
Este cambio hará que se imprima lo que aparezca en tu escena principal (incluido clips de película creados dínámicamente.
No olvides cambiar todos los contenedor_mc.
Un saludo
16 junio, 2008 at 6:45 pm
Excelente ejemplo, gracias.
5 agosto, 2008 at 8:31 pm
Holas amigos tengo un problema, me gustaria saber como haria para que la hora de imprimir SOLO ME IMPRIMA EL TEXTO NADA MAS. Gracias
5 agosto, 2008 at 8:44 pm
En este caso particular se esta imprimiendo la pelicula contenedor_mc, puede colocar un campo de texto o los que quieras dentros de esa pelicula y el resto de los elementos fuera de la misma, de esa manera solo se imprimiran los text
3 septiembre, 2008 at 8:16 pm
Mi estimado desearía saber copmo evitar se habra el cuadro de diálogo de selección de impresora al imprimir, lo que deseo es que imprima directamente a la impresora por default
3 septiembre, 2008 at 10:02 pm
Hubert, lamentablemente por una cuestión de seguridad no se puede evitar que no se abra la ventana de dialogo de la impresora :(
5 diciembre, 2008 at 12:44 pm
Que tal!
Tengo un problema, tengo una presentacion en donde incluyo varios SWF.
Estos SWF tienes botones de avance, retroceso, etc., incluye el de impresion.
Sin embargo al darle click a este boton, me imprime TODO incluyendo la presentacion, pero yo solo quiero el SWF.
Si yo reviso el SWF y le doy imprimir funciona perfectamente, solo cuando es importado tengo el problema. Ayuda por favor!
EM
28 abril, 2009 at 2:40 pm
Leo, excelente aporte el tuyo, pero sabes, no logro porder impimir textos dinámicos, es decir, campos de texto a los que mediante AS les asigno su contenido, al intentarlo me imprime los campos en blanco.
20 mayo, 2010 at 1:37 pm
excelente lo que colgaste, pero tengo la misma duda que rodolfo, como hago si quiero imprimir un formulario? te agradecere mucho tu aporte. Gracias
28 junio, 2011 at 12:31 am
Excelente tutorial muy claro y entendible pero tengo una duda, veo que cuando hago esto desde el swf en el nivel 0 va muy bien pero si intento cargar este mismo swf dentro de otro mc me corta la hoja al tamaño de este mc es decir que si mi mc donde cargo mide de alto 535px esta medida es la se imprime sin importar si el swf a imprimir es mas grande, podrias ayudarme a solucionar este detalle de antemano muchas gracias y felicidades de nuevo.
28 junio, 2012 at 1:17 am
e utilizado printjob con mucho éxito pero hoy se me presentó un problema y espero ustedes puedan orientarme en mi trabajo necesito imprimir unos campos que se cargan desde un archivo txt pero al mandar a imprimir no se ven los campos que están de manera vertical aunque estén embebidos