Muchas veces tenemos que imprimir algo en nuestro proyecto flex, pero no sabía cómo hacerlo ... ahora, y si hemos tenido diferentes plantillas para imprimir lo que queremos? no es fácil? Es en este tutorial voy a explicar un proceso muy simple de que nuestros informes casi listo para recibir datos que se va a imprimir ... vamos a acciones, crear un nuevo proyecto con el nombre testRelatorio. y, a continuación, crear una carpeta raíz (por lo general, src) que el proyecto denominado de impresión e imprimir dentro de esa carpeta crear una nueva carpeta de activos ...
En mi ejemplo, utilizar el logotipo del blog, si quieren seguir el tutorial, copie la siguiente imagen y colem la siguiente imagen en esta carpeta activos:

Pronto
Estamos ahora se establece un nuevo componente. Menús: Archivo-> Nueva-> Componente MXML y elegir las siguientes definiciones:
Haga clic en Finalizar
Tenemos nuestra plantilla, plantilla que ponemos todo el código a continuación:
- <? Xml " 1.0 " version = "1.0" " utf-8 " ?> encoding = "UTF-8">
- <Mx: Lienzo " http://www.adobe.com/2006/mxml " xmlns: mx = "http://www.adobe.com/2006/mxml" " 595 " width = "595" " 842 " height = "842" " #FDF8F8 " backgroundColor = "# FDF8F8" " 1 " > backgroundAlpha = "1">
- <Mx: Lienzo " 33 " x = "33" " 34 " y = "34" " 526 " width = "526" " 775 " height = "775" " safeArea " > id = "safeArea">
- <Mx: Texto " 10 " y = "10" " Header " text = "Encabezado" " 288 " width = "288" " 117 " height = "117" " DOC_HEADER_TEXTO " id = "DOC_HEADER_TEXTO" " #030303 " color = "# 030303" " 10 " derecho = "10" " Verdana " fontFamily = "Verdana" " 13 " Tamaño de fuente = "13" " italic " FontStyle = "cursiva" " right " /> textAlign = "derecha" />
- <Mx: Lienzo " 0 " x = "0" " 192 " y = "192" " 526 " width = "526" " 583 " height = "583" " DOC_CONTEUDO " > id = "DOC_CONTEUDO">
- </ Mx: Lienzo>
- </ Mx: Lienzo>
- <Mx: Imagen " 33 " x = "33" " 34 " y = "34" " @Embed(source='assets/logo.png') " source = "@ Incrustar (fuente = 'activos / logo.png')" " DOC_LOGO " /> id = "DOC_LOGO" />
- <Mx: Etiqueta " 33 " x = "33" " 185 " y = "185" " Titulo " text = "Título" " 526 " width = "526" " 27 " height = "27" " bold " fontWeight = "negrita" " normal " FontStyle = "normal" " center " textAlign = "centro" " 13 " Tamaño de fuente = "13" " #CD3E06 " color = "# CD3E06" " DOC_TITULO " /> id = "DOC_TITULO" />
- <Mx: Etiqueta " 805 " y = "805" " Rodape " text = "pie de página" " 526 " width = "526" " center " textAlign = "centro" " 0 " horizontalCenter = "0" " DOC_RODAPE " id = "DOC_RODAPE" " #919394 " /> color = "# 919394" />
- </ Mx: Lienzo>
Y listo, tenemos nuestra plantilla preparada, con zonas de logo, cabecera, título, contenido y pies de página, debe ser como la imagen:
Volver a nuestra aplicación creada en el iniciador del proyecto (testRelatorio.mxml) y pegar este código:
- <? Xml " 1.0 " version = "1.0" " utf-8 " ?> encoding = "UTF-8">
- <Mx: Aplicación " http://www.adobe.com/2006/mxml " xmlns: mx = "http://www.adobe.com/2006/mxml" " absolute " layout = "absoluta" " [1.0, 1.0] " backgroundGradientAlphas = [1,0, 1,0] " " [#FFFDFD, #FFFDFD] " > backgroundGradientColors = "[FFFDFD #, # FFFDFD]">
- <Mx: Script>
- <! [CDATA [
- mx.collections.ArrayCollection importación;
- [Bindable]
- var datos privados: ArrayCollection = new ArrayCollection ([(título: "el Libro", el bacalao: "# 5345", el precio: "50 €"), (título: "Cader B", el bacalao: "# 553", el precio: "12 €"), (título: "VERDE FLEX," bacalao "# 5885", el precio: "30 € "}]);
- ]]>
- </ Mx: Script>
- <Mx: DataGrid " {dados} " DataProvider = "(datos)" " 350 " width = "350" " 0 " horizontalCenter = "0" " 0 " verticalCenter = "0" " minhaDataGrid " > id = "minhaDataGrid">
- <Mx: Columns>
- <Mx: DataGridColumn " Cod. " headerText = "Bacalao". " cod " de datos = "bacalao" " 30 " /> width = "30" />
- <Mx: DataGridColumn " Artigo 1 " headerText = "Artículo 1" " 270 " width = "270" " titulo " /> de datos = "title" />
- <Mx: DataGridColumn " Preco " headerText = "Precio" " preco " de datos = "precio" " 50 " /> width = "50" />
- </ Mx: columnas>
- </ Mx: DataGrid>
- <Mx: El botón " Imprime " label = "Imprimir" " 350 " width = "350" " 0 " horizontalCenter = "0" " 90 " /> verticalCenter = "90" />
- </ Mx: Aplicación>
Deberíamos tener algo como:
Ahora sólo falta la luz de nuestra impresión.
ponemos en nuestra testeRelatorio.mxml después de nuestra arrayCollection:
- importación template ; imprimir. plantilla;
- importación printing . FlexPrintJob ; mx. impresión. FlexPrintJob;
- ( source = " print/assets/logo.png " )] [Incrustar (fuente = "print / activos / logo.png")]
- privado var Class logo: Clase
- privado función : void print (): void (
- var template = new Modelo: plantilla = new plantilla;
- visible = false ; modelo. Visible = false;
- modelo ) ; addChild (modelo);
- DOC_HEADER_TEXTO . text = " Exmo. Sr. Antunes Costa \n\n Relatorio resumido das compras por pagar! " ; modelo. DOC_HEADER_TEXTO. text = "Sir Sr. Costa Antunes \ n \ n informe de síntesis de las compras a pagar!";
- DOC_LOGO . source = logotipo ; //convem ser uma imagem já embebida, podemos usar caminho, mas a class é mais rapida a ser carregada e impede que haja falta de foto na impressão. modelo. DOC_LOGO. source = logo; / / debe ser una imagen ya empapado, podemos utilizar camino, pero la clase es a cargar con mayor rapidez y evitar que había una falta de impresión fotográfica.
- DOC_TITULO . text = " RELATORIO FALTAS! " modelo. DOC_TITULO. text = "INFORME desaparecidos!"
- DOC_RODAPE . text = " Listagem de falhas de pagamento. Para mais informações contacte +225 554 25485 " ; modelo. DOC_RODAPE. text = "Lista de los fracasos de pago. Para obtener más información, póngase en contacto +225 554 25485";
- DOC_CONTEUDO . addChild ( minhaDataGrid ) ; //adicionamos a datagrid como child do nosso conteudo modelo. DOC_CONTEUDO. addChild (minhaDataGrid); / / añadir el DataGrid como hijo de nuestro contenido
- / / Agregar el modelo para permanecer en el escenario, invisible.
- / / Declarar el trabajo de impresión
- var FlexPrintJob = new PrintJob: FlexPrintJob = new ; FlexPrintJob ();
- / / Iniciar el trabajo de impresión
- . start ()) if (printJob. inicio ()) (
- / / Añadir a nuestra página para imprimir
- addObject ( modelo ) ; PrintJob. addObject (modelo);
- / / Enviar el trabajo a la impresora
- send () ; PrintJob. send ();
- / / Eliminar nuestro modelo de la etapa
- modelo ) ; removeChild (modelo);
- )
- )
y poner en nuestro botón para imprimir, dentro de su etiqueta, haga clic en el = "print ()";
- <Mx: El botón " Imprime " label = "Imprimir" " 350 " width = "350" " 0 " horizontalCenter = "0" " 90 " verticalCenter = "90" " imprime() " /> haga clic = "print ()" />
Allí, su solicitud de guardar y ejecutar el ejemplo, haga clic en imprimir y ver lo fácil que es ![]()
Si quieren pueden crear otras plantillas, una variedad de formas y ejemplos .. y que debe importar y lo añade a la etapa cuando no invisible a estropear su aplicación ... en este caso el DataGrid desaparece porque me cambió mi niño ... añadiendo a la plantilla. Si desea siempre visible, la creación de una nueva igualdad en DataGrid template.mxml con el nombre DOC_DATAGRID y cuando se agrega la impresión de la misma dataProvider:
modelo.DOC_DATAGRID.dataProvider = datos;
¡y voilà!
Sugerencia. Si desea imprimir en PDF, o utilizar el AlivePDF o utilizar un controlador de adobe para añadir una impresora a pdf del que envía el trabajo de impresión para el conductor que escribe en formato pdf.
Pueden ver el ejemplo en línea con el código fuente disponible aquí
Espero que sea útil.
Abrazar.













4 Comentarios
Felicidades por el post, muy informativo, objetivo y esclarecedor.
Recuerdos,
Silva Desarrolladores
Gracias!
Abrazar.
Mario muy bueno! Abrazar.
Muy buena Mario.
Ayudó mucho!