Sobre AlivePDF y la clase FileReference

Hace un tiempo estuve buscando información sobre cómo trabajar con archivos PDF en Flex y, particularmente, como guardar texto en archivos de este tipo y me topé con un popular ejemplo en el que se presenta una pantalla donde es posible dibujar garabatos con el mouse para luego guardar dicha imagen en un archivo PDF. Este ejemplo hace uso de la famosa librería AlivePDF para la manipulación de archivos PDF desde Flex.

Una característica interesante de esta librería es que el procesamiento del archivo PDF se hace en el mismo cliente Flex. Sin embargo, viendo el código del ejemplo mencionado me di cuenta de que al momento de guardar el archivo a disco, se hace una invocación a un script PHP en algún servidor remoto que, supongo, genera el archivo PDF y lo reenvía al cliente Flex para que sea descargado. Esto me pareció algo inconveniente, pues todo el procesamiento del archivo PDF se hace en el cliente Flex, pero no se accede a disco desde Flex al momento de guardarlo. Me pregunte entonces si sería posible acceder a disco desde el cliente Flex para poder crear y guardar un documento PDF sin hacer uso de ninguna tecnología de servidor. Lo que encontré fue que Flash Player 10  incluye una clase especial para la carga y descarga de archivos hacia y desde un servidor, respectivamente: la clase FileReference. Esta clase logra acceder a disco abriendo un cuadro de dialogo “Guardar como” del sistema operativo. Así que si se desea manejar archivos PDF exclusivamente en el cliente Flex, me parece adecuado hacer uso de esta clase para guardar a disco el archivo PDF sin hacer uso de ningún servicio remoto.

Comentando una línea y agregando solo tres más al ejemplo original, fue posible crear y guardar a disco un archivo PDF mediante la librería AlivePDF y la clase FileReference. La librería AlivePDF posee un método save() mediante el cual es posible generar el documento PDF. Este método tiene dos constructores en los cuales se indica si la generación del documento será de manera remota (en un servidor) o de manera local (en el cliente Flex). Como es de esperarse, comenté la línea donde se invoca a este método de manera remota en el ejemplo original y agregué la invocación al mismo método pero de manera local. Las dos siguientes líneas son triviales cuando se hace uso de la librería FileReference.

Espero que les guste el ejemplito. Se aceptan comentarios y dudas.

Juan Manrique.

DrawingDemoRIA212
Codigo

3 Responses to “Sobre AlivePDF y la clase FileReference”

  1. Esta curioso el ejemplo.. creo que es una herramienta con la que se pueden lograr hacer cosas muy interesantes…

  2. Hola, estoy confundida, yo necesito imprimir un PDF desde un archivo SWF, yo no uso Flex, solo flASH AS3.

    Trate de tomar solo el script AS y correrlo desde flash pero me dice que requiere de librerias de FLEX, la pregunta es, hay alguna forma conocida para guardar movieclips como PDF sin necesidad de usar AIR o FLEX ?? Alguna libreria que solo utilice as3??

    Gracias por tu ayuda, saludos cordiales

    Ruth

  3. Juan Manrique
    15/02/2010 at 7:31 pm »

    Hola Ruth. La librería AlivePDF está totalmente hecha en ActionScript 3 (de Flex no tiene nada en su núcleo), lo que te garantiza, plenamente, que puedes usarlo en Flash. Te recomiendo que descargues la librería de la página indicada en el post y descomprimas el archivo ZIP en alguna carpeta. Explora el contenido de esta carpeta y encontrarás un ejemplo hecho completamente en Flash, así como otro ejemplo hecho en AIR-Flex. El error que te da al copiar el script del ejemplo, probablemente se deba a que los componentes que uso en el ejemplo son del framework Flex y no existen en Flash. Aunque todos los componentes Flex heredan de la clase Sprite, que pertenece a Flash, tambien heredan de FlexSprite, y esta clase no pertenece al framework Flash.

    Con respecto a si es posible guardar un movie clip dentro de un PDF, puedo decirte que no soy muy conocedor del framework Flash pero estoy casi seguro de que sí puedes guardar al menos un frame de un movie clip. Intenta capturar un frame del movie clip y guárdalo en el PDF como una imagen en bytearray. Publiqué un ejemplo donde podrás ver como se hace esto, aquí.

    Espero que algo de lo que escribí te ayude a solventar tu problema y sientete libre de seguir preguntando por aquí o preferiblemente en nuestro grupo de consultas.

    Saludos. Juan Manrique.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Spam protection by WP Captcha-Free

Volver arriba · WordPress is using WordPress and the free Snag theme.