Tengo la siguiente situacion:
Elabore una aplicacion de mediano tamaño en Flex 3 (SDK 3.5) , PHP y MySQL ,
La necesidad de la misma aplicacion y el proceso de la empresa me obliga a generar un PDf con ciertos campos de la BD y algunos textos estaticos e imagenes
Dentro de un componente PopUp tengo un DataGrid , en una columna agregue un ItemRenderer Checkbox , al hacer click en este checkbox y dejar el valor de TRUE se genera un PDF que despues de revision la propia aplicacion envia por correo ,todo esto en automatico , estoy usando AlivePDF 0.1.5 para generar el PDF.
Hasta este punto TODO funciona a la perfecciòn .
Aqui vienen los problemas
Para optimizar el flujo de la aplicacion y facilitar el entendimiento de los usuarios genere un boton debajo del datagrid, a este boton le asigne en el evento CLICK el codigo de generacion del PDF con los datos del Datafgrid.selectedItem tal y como lo hace el intemrenderer.
el resultado es nada,
jamas aparece el dialogo del explorador donde genera el pdf.
he estado haciendo pruebas , con Alerts.show , corriendo la app en modo debug , entra a la funcion doPDF(evt:MouseEvent) genera todas las variables, toma los datos del datagrid
pero el generar el objeto myPDF = new PDF (..........................);
ahi no hace nada, jamas pasa por ahi
ya cambie nombre de variables
re importe los import org.alivepdf. ...............
revise todo
inclusive provoque errores de sintaxis
reconoce los errores de sitaxis
reconoce cuando le quito algun import
pero jamas genera el PDF
tendra alguien alguna idea
exte es el codigo que si funciona :
**************************************************************************************************************
<mx:DataGridColumn headerText="Email" textAlign="center" width="35" editable="false" dataField="correoCol1">
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox selected="{(int(data.correoCol1) == 1)?true:false}" click="{data.correoCol1 = (data.correoCol1 != 1) ? 1 : 0;}" change="onChange(event);">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.sampler.NewObjectSample;
import flash.utils.ByteArray;
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
import org.alivepdf.colors.RGBColor;
import org.alivepdf.fonts.FontFamily;
import org.alivepdf.layout.Align;
import org.alivepdf.layout.Orientation;
import org.alivepdf.layout.Size;
import org.alivepdf.layout.Unit;
import org.alivepdf.pages.Page;
import org.alivepdf.pdf.PDF;
import org.alivepdf.saving.Method;
import org.alivepdf.links.HTTPLink;
import org.alivepdf.saving.Download;
import org.alivepdf.images.ResizeMode;
import org.alivepdf.images.PNGImage;
import org.alivepdf.images.JPEGImage;
import org.alivepdf.display.Display;
import org.alivepdf.display.PageMode;
import org.alivepdf.images.*;
import org.alivepdf.fonts.Style;
import flash.utils.Timer;
import flash.events.TimerEvent;
[Embed( source="/imagen/vtw_JPG.jpg" , mimeType="application/octet-stream")]
private var jpgBytes:Class;
private var myPDF:PDF;
[Bindable]
public var cnumero:Number;
private var valor:Number;
private function onChange(evt:Event):void{
// aqui declaro y trabajo con las variables
myPDF = new PDF (Orientation.PORTRAIT, Unit.MM, Size.LETTER);
myPDF.addPage();
myPDF.addImageStream(new jpgBytes() as ByteArray,0,0,0,0,1,"FIT_TO_PAGE");
myPDF.setFont(FontFamily.TIMES, Style.NORMAL);
myPDF.textStyle(new RGBColor(0x8f5c30),1);
myPDF.setFontSize(13);
myPDF.addText(fecha_comp,20,70);
myPDF.addText("MR. "+nombre1,20,76);
// aqui agrego mas de 20 lineas de texto incluidas mis variables
myPDF.save(Method.REMOTE,"http://miservidor/create.php",Download.ATTACHMENT,identificador+".pdf");
}
]]>
</mx:Script>
</mx:CheckBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
*****************************************************************************************************************
*******************************************************************************************************************
y esto que sigue es mi codigo que no trabaja
****************************************************************************************************************
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
width="900" height="550" close="removePublisher(event)" backgroundAlpha="1.0" color="#DCF3F6" backgroundColor="#5D748C"
alpha="0.90" borderStyle="solid" creationComplete="traeDatos()" horizontalAlign="center" verticalAlign="middle">
<mx:Script>
<![CDATA[
// exactamente los mismos imports que el ejemplo que si trabaja , mas unos cuantos necesarios
[Bindable]
public var tradedid:Number;
[Embed( source="/imagen/vtw_JPG.jpg" , mimeType="application/octet-stream")]
public var jpgBytes:Class;
public var archivoPDF:PDF;
public function doPDF(evt:MouseEvent):void
{
// aqui van mis variables
// la siguiente linea es donde jamas entra el codigo a la hora de la ejecucion, inclusive poniendo errores de sintaxis
archivoPDF = new PDF (Orientation.PORTRAIT,Unit.MM,Size.LETTER);
archivoPDF.addPage();
archivoPDF.addImageStream(new jpgBytes() as ByteArray,0,0,0,0,1,"FIT_TO_PAGE");
archivoPDF.setFont(FontFamily.TIMES, Style.NORMAL);
archivoPDF.textStyle(new RGBColor(0x8f5c30),1);
archivoPDF.setFontSize(13);
archivoPDF.addText(fecha_comp,20,70);
archivoPDF.addText(nombre1,20,76);
archivoPDF.save(Method.REMOTE,"http://miservidor/create.php",Download.ATTACHMENT,identificador+".pdf");
Alert.show("Are you sure to send Email ?",
"Confirm Email Send", 3, this, sendEmailHandler);
}
private function sendEmailHandler(event:CloseEvent):void{
if (event.detail == Alert.YES)
{
enviarCorreo.send();
}
}
]]>
</mx:Script>
// aqui va mi HTTP Service
// luego viene mi panel y mi datagrid ya sin la columna del itemrenderer
//finalmente el boton que debe llamar la funcion que generara el PDF
<mx:Button y="392" label="Enviar Correo" color="#1A3C3F" id="btnEmail" click="doPDF(event);" x="358.5"/>
</mx:Panel>
</mx:TitleWindow>