Esta publicación es el inicio de una serie de entradas que giran alrededor de APEX Office Print y su integración con Oracle APEX.
Un requerimiento habitual por parte de los clientes con los que he trabajado, y que cuentan con aplicaciones en Oracle APEX, es el de poder imprimir sus datos, reportes y formularios rápidamente, con opciones para varios formatos y tipos de documentos. Todo consultor de APEX se ha enfrentado a esta consulta al menos una vez en su carrera, la cual puede llegar a causar dolores de cabeza ya que no hay muchas opciones que vengan incluidas con la herramienta, y sus opciones de personalización son bastantes limitadas.
La decisión de crear páginas Printer Friendly (opción que, en mi experiencia, muchos tomaron al trabajar con versiones como 3.x y 4.x) ocasiona una deuda tecnólogica enorme, dejando a la aplicación a merced del temperamento del navegador que maneje el usuario y de cualquier actualización que puedan sufrir el tema y plantillas asignados a la aplicación.
Hay varias soluciones externas que pueden ayudar a solventar este problema, entre ellas BI Publisher, PL/PDF y AOP, siendo esta última a la que dedicaremos atención en esta entrada de blog.
Con ustedes, APEX Office Print
AOP permite generar documentos y reportes con formato altamente personalizado, basándose en plantillas que son enviadas en formato JSON junto con la información a ser incluida en el documento final, el cual puede ser un Word, Excel, PDF, PowerPoint o HTML.
Su arquitectura se basa en un servidor web con la capacidad de autoescalarse dependiendo del número de CPUs disponibles, y que está a la espera de solicitudes que vengan con un payload JSON. Este servidor está disponible tanto para despliegues locales como para usarlo en la nube, y cuenta con APIs REST y PL/SQL, así como con un plugin para Oracle APEX que permite una integración rápida de nuestros reportes con la herramienta.

Tomando en cuenta que AOP es una herramienta basada en plantillas, las mismas pueden ser creadas en cualquier editor y subirse a los archivos de la aplicación para poder ser invocadas por el plugin. La herramienta soporta plantillas para múltiples formatos, y maneja distintas etiquetas para definir la ubicación y manipulación de los datos que se envían.
Gracias a la integración con APEX que mencioné previamente, tenemos varias posibilidades:
- Impresión directa de reportes y grillas interactivas desde APEX, con tan solo indicar en el plugin los identificadores estáticos asignados a los mismos, los cuales se especifican en la plantilla con las etiquetas correspondientes y se formatean e imprimen de acuerdo a eso.
- Impresión del documento tras consulta a la base de datos desde APEX, lo cual está soportado por el propio plugin. En sus opciones puede definirse un query que se ejecutará para extraer la información a ser enviada al servidor. Dicho query requiere tener cierto formato para poder ser interpretado y convertido a JSON, pero su contenido puede adaptarse a lo que requiramos para poder llenar nuestra plantilla.
- Impresión del documento desde la base de datos, en caso de que se requiera una lógica y procesamiento más complejos al momento de usar la herramienta. Esta es una opción más avanzada que da total control sobre las llamadas al servidor mediante el API PL/SQL.
Costo de APEX Office Print
La gente suele decir que si algo es bueno y bonito, no puede ser barato. Afortunadamente, el equipo de AOP ofrece un plan gratuito en la nube para aquellos que quieran experimentar con la hearramienta. Por supuesto, este plan tiene sus limitantes, pero sirve como un inicio perfecto para aquellos que estén evaluando actualizar y mejorar las opciones de impresión de sus aplicaciones. Los planes en la nube disponibles al 24/Feb/2020 son:

Pueden ver que por cada plan proporcionan una cuota de reportes al mes con un número ilimitado de reportes en modo desarrollador, el cual fue incluido desde AOP 19.1 y pemite hacer llamados a su servidor en la nube sin que la cuota principal se vea afectada, lo cual es perfecto para hacer pruebas y nuevos desarrollos. Hay que tomar en cuenta que los documentos generados en el modo desarrollador incluirán una marca de agua al momento de ser generados, lo cual es algo habitual cuando se trabaja con estos modos de prueba.
Para finalizar esta entrada introductoria al mundo de AOP, les dejo algunos enlaces que pueden ser de ayuda para un acercamiento inicial a la herramienta:
- En esta aplicación podrán crear una cuenta gratuita en la nube para sus pruebas.
- También puede revisar la aplicación de ejemplo que tienen disponible en su sitio.
- Pueden leer la documentación en español en caso de que tengan dudas más técnicas al momento de desarrollar.
En próximas entradas revisaremos algunas de las opciones de AOP y su uso con ejemplos específicos. ¡Hasta la próxima!