Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago

PDF Viewer visual no funciona con base64

Hola a todos

mi problema es sobre el uso de PDF Viewer visual, me gustaría tomarlo para ver un PDF en mi informe.

Leí su resumen en https://appsource.microsoft.com/en-us/product/power-bi-visuals/WA104382087?tab=Overview y luego miré un informe de muestra que encontré en la Web ( https://info.enterprisedna.co/power-bi-custom-visuals/pdf-viewer/ ) explicando cómo configurarlo, y parecía bastante fácil.

A medida que leo, los modelos tabulares no pueden contener más de 30.000 caracteres, por lo que como la longitud de las cadenas base64 es mayor que 30.000 en el informe de ejemplo se dividen en 2 columnas diferentes, entonces hay una columna calculada que hace que la concatenación de los dos valores que obtienen el valor base64 para dar como valor al visual del visor de PDF.

En mi informe, obtengo base64 de un servicio web que desarrollé. Este es mi editor avanzado:

Dejar
Origine á Sql.Database("pbidev", "tracking_dwh", [Consulta"seleccione top 5 * de Documentos"]),
Paso: Table.AddColumn(Origine, "Base64", cada Web.Contents("http://localhost:44342/api/values?ky-8D1-478C-B092-9563F526A47A&username-usr&password-pwd")),
"Modificato tipo" - Table.TransformColumnTypes(Step,'Base64', escriba text')
En
"Tipo modificado"

De esta manera obtengo mi base64 pero como es demasiado grande he creado dos columnas para almacenarlo, usando estos códigos y almacenando los primeros 30.000 caracteres en la primera columna y los otros en la segunda:

Base64_1 de la izquierda (Query1[Base64], 30000)
Base64_2- MID(Query1[Base64], 30001, LEN(Query1[Base64])-30000)
Finalmente creé la concatenación:
Base64_Total - Query1[Base64_1] & Query1[Base64_2]
No sé por qué, pero si uso este último campo llamado Base64_Total en PDF Viewer visual en el campo "Datos PDF" no obtengo el PDF y se queda blanco, mostrando cualquier cosa.
Mi duda es que en el informe de ejemplo el base64 ya está dividido mientras lo consigo como una cadena completa, luego lo parto y luego lo vuelvo a armar, por lo que podría causar el problema, pero ¿cómo puedo obtener un base64 que ya está dividido de mi servicio web? Tengo un get allí y puedo recibir sólo un elemento como salida (mi base64) y no la partición en 2 subcadenas diferentes.
Gracias de antemano por su ayuda. Te lo agradezco.
Nick

2 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Los documentos Pdf deben almacenarse en el modelo de datos en formato base64, lo que significa que deben convertirse a este formato antes de importarse a Power BI. Esto se puede lograr de muchas maneras, por ejemplo en Python con unas pocas líneas de código:

    importarbase64
    
    conopen(<[ruta a pdf]>"rb"como pdf_file:
        - base64. b64encode(pdf_file. read())

    En Power BI, el Visor de pdf toma un único campo, la columna que almacena los datos base64, como argumento:

    Cuando se usa el Visor de pdf en Power BI, los documentos pdf solo se mostrarán cuando haya un documento seleccionado en el contexto de filtro actual. De lo contrario, se muestra una advertencia:

    Con un documento seleccionado, el Visor de Pdf muestra documentos pdf con controles que permiten al usuario cambiar de página y acercar y alejar:

    En el panel de formato también hay posibilidades de mostrar/ocultar los controles de encabezado y el desplazamiento de desbordamiento:

    • Anonymous's avatar
      Anonymous
      Not applicable

      Gracias @Pistle por tu respuesta,

      lo que dices ya está claro para mí. Sé que el objeto visual requiere el almacenamiento de columnas base64 como argumento y necesito seleccionar un documento a la vez, pero mi problema viene antes. Como puede ver en la consulta del Editor avanzado, he pegado en rojo en mi publicación, los documentos ya se convierten en base64 cuando llego a Power BI, ya que este paso lo realiza mi servicio web. En el informe de ejemplo se puede encontrar en el enlace que publiqué, las cadenas base64 ya están partes en 2 columnas diferentes y luego se concatenan para obtener la columna de argumento, pero obtengo mi cadena que es más grande que 30.000 caracteres y es el máximo que se puede almacenar en modelos tabulares, como dice la documentación visual de PDF Viewer.

      ¿Cómo puedo arreglar eso?

      Nick