Todo es de color de rosas cuando desarrollamos Power Apps de tipo Canvas en Power Platform hasta que nos llega el momento de importar documentos en formato PDF.

¡No existe un control de subida de documentos PDF!

Para resolver este reto proponemos una sencilla solución:

Coger prestado el control de adjuntos de los formularios

Un detalle importante a tener en cuenta es que este método es válido usando tanto los formularios clásicos como los modernos.

Esta idea está basada en una solución propuesta por Reza Dorrani. En el momento que surgió la necesidad de llevar a cabo su idea vimos que era inviable dado que no disponemos de acceso al Sharepoint del cliente. Es por este motivo que adaptamos su solución para realizarla completamente desde Dataverse.

Importación de documentos PDF desde Canvas App Axazure

¿Cómo obtenemos el control de adjuntos?

El primer paso para obtener el control de adjuntos es crear una tabla o utilizar una ya existente que contenga una columna de tipo archivo.

Importación de documentos PDF desde Canvas App Axazure
Importación de documentos PDF desde Canvas App Axazure

Una vez disponemos de la tabla, el siguiente paso es insertar en nuestra aplicación Canvas el control del formulario de edición y seleccionar la tabla escogida como fuente de datos.

Importación de documentos PDF desde Canvas App Axazure
Importación de documentos PDF desde Canvas App Axazure

Con el formulario de edición insertado y configurado para que use como origen de datos la tabla con la columna de tipo archivo, sólo hace falta añadir este campo al formulario y tendremos en nuestra aplicación el control de adjuntos.

Importación de documentos PDF desde Canvas App Axazure
Importación de documentos PDF desde Canvas App Axazure

Dado que no necesitamos trabajar con el formulario, cogemos prestado el control y borramos el formulario.

Importación de documentos PDF desde Canvas App Axazure
Importación de documentos PDF desde Canvas App Axazure
Importación de documentos PDF desde Canvas App Axazure

Al extraer el control del formulario, la pestaña de errores nos avisa de que hay correcciones por hacer. Concretamente, necesitamos modificar las siguientes propiedades:

  • BorderColor
  • DisplayMode
  • Items
  • Tooltip
  • Y
Importación de documentos PDF desde Canvas App Axazure

Tras seguir estos pasos, ya tenemos el control de adjuntos para poder importar documentos PDF en nuestra aplicación de tipo Canvas.

¿Cómo podemos utilizar el control de adjuntos?

Antes de avanzar en el uso del control, es necesario considerar su funcionalidad. Este control sube los adjuntos a un BLOB y el resultado se materializa en una tabla con el siguiente esquema:

Importación de documentos PDF desde Canvas App Axazure

Una forma muy útil de transportar documentos es usando la codificación Base64. A continuación, los trucos de magia a los que tenemos que recurrir para codificar el documento.

Importación de documentos PDF desde Canvas App Axazure

Observamos el resultado de usar el control de adjuntos mediante el visor de PDF y una etiqueta para comprobar la dirección del BLOB.

Importación de documentos PDF desde Canvas App Axazure
Importación de documentos PDF desde Canvas App Axazure

Para convertir el documento en una cadena codificada en Base64, primero insertamos un control de imagen y lo configuramos para que “muestre” el PDF.

Importación de documentos PDF desde Canvas App Axazure

Mediante el uso de un botón y la función JSON, realizamos la transformación y la almacenamos en este caso en una variable local.

Importación de documentos PDF desde Canvas App Axazure

Finalmente, podemos ver el resultado en la etiqueta que muestra la variable local. En ella se observa la cadena codificada en Base64 del documento PDF importado mediante el control de adjuntos.

Importación de documentos PDF desde Canvas App Axazure

Espero que os sea de utilidad este artículo y podáis aplicarlo en vuestros futuros desarrollos. ¡Hasta la próxima! 😊

About the Author: Adrián Camargo

Importación de documentos PDF desde Canvas App Axazure
D365FO TECH

¿Quieres compartir?