Impresión en Adobe AIR: generación de PDF independiente
Pregunta
¿Es posible generar documentos PDF en una aplicación Adobe AIR sin recurrir a un servicio web de ida y vuelta para generar el PDF?Miré los informes Flex iniciales en GoogleCode, pero requiere un viaje de ida y vuelta para generar el PDF real.
Dado que se supone que AIR es el extremo de escritorio para RIA, ¿hay alguna manera de lograrlo?Sospecho que estoy pasando por alto algo, pero mis búsquedas en la documentación no revelan demasiado y, dado el objetivo de AIR, no puedo creer que sea algo que no incluyeron.
Solución
hay VivoPDF, que es una biblioteca de generación de PDF para ActionScript que debería funcionar, se creó específicamente para la situación que usted describe.
Otros consejos
Acabo de agregar una demostración de Adobe Air + Javascript + AlivePDF:
Esta demostración no Requiere flexibilidad y es bastante sencillo.
http://www.drybydesign.com/2010/02/26/adobe-air-alivepdf- without-flex/
Uno de los otros equipos en los que trabajo está trabajando en una aplicación de dibujo basada en Flex y les sorprendió totalmente que AIR/Flex no tuviera la creación de PDF incorporada.Terminaron desarrollando su propio creador de PDF simple basado en la especificación de PDF.
Sí, es muy fácil crear PDF usando AlivePDF, aquí está el código de muestra, el primer método crea un pdf y el segundo método guarda el pdf en el disco y devuelve la ruta, no dudes en hacer cualquier pregunta.
public function createFlexPdf() : String
{
pdf = new PDF();
pdf.setDisplayMode (Display.FULL_WIDTH,Layout.ONE_COLUMN,Mode.FIT_TO_PAGE,0.96);
pdf.setViewerPreferences(ToolBar.SHOW,MenuBar.HIDE,WindowUI.SHOW,FitWindow.RESIZED,CenterWindow.CENTERED);
pdf.addPage();
var myFontStyle:IFont = new CoreFont ( FontFamily.COURIER );
pdf.setFont(myFontStyle,10);
pdf.addText('Kamran Aslam',10,20);//String, X-Coord, Y-Coord
return savePDF();
}
private function savePDF():String
{
var fileStream:FileStream = new FileStream();
var file:File = File.createTempDirectory();
file = file.resolvePath("temp.pdf");
fileStream.open(file, FileMode.WRITE);
var bytes:ByteArray = pdf.save(Method.LOCAL);
fileStream.writeBytes(bytes);
fileStream.close();
return file.url;
}