Download de PDF no Power Apps Canvas sem salvar no SharePoint

Compartilhe nas Redes Sociais:

Fazer o download de PDF no Power Apps Canvas diretamente na tela da aplicação é um dos desafios mais comuns que desenvolvedores enfrentam. Você consegue gerar o PDF com a função PDF(), exibir no PDF Viewer, mas na hora de permitir que o usuário baixe o arquivo… o caminho não é óbvio. Neste artigo você vai aprender a técnica completa: gerar o PDF em variável, usar o controle Attachment com conversão Base64 e permitir o download sem precisar salvar no SharePoint ou OneDrive.

Essa abordagem evita etapas desnecessárias como upload para o SharePoint/OneDrive, geração de URL compartilhada e chamadas a fluxos do Power Automate. É tudo feito do lado do cliente, direto no Power Apps Canvas.

Por que o download de PDF no Power Apps Canvas não funciona diretamente?

A função PDF(Gallery) retorna um objeto do tipo Blob — um dado binário em memória. O Power Apps não tem um botão de download nativo para esse tipo de dado, então a maioria dos desenvolvedores tenta três caminhos:

  • Função Download(): Recebe uma URL, não um Blob. Seria necessário primeiro salvar o arquivo em algum lugar para obter uma URL válida.
  • Salvar no SharePoint/OneDrive: Funciona, mas adiciona latência, cria arquivos temporários e exige permissões de escrita.
  • Controle Attachment (Anexos): Este é o caminho certo, mas requer uma configuração específica que a maioria desconhece.

A solução elegante usa o controle Attachment com a propriedade Items configurada com uma coleção contendo o arquivo convertido para Base64. É essa a técnica que vamos implementar agora.

Passo 1: Gerar o PDF em uma variável

O primeiro passo é capturar o PDF gerado em uma variável global para poder reutilizá-la:

Set(varMeuArquivo, PDF(Galeria5))

No evento OnSelect do botão de gerar PDF, essa fórmula captura o conteúdo da galeria no formato Blob e armazena na variável varMeuArquivo. Para validar que o PDF foi gerado corretamente, você pode adicionar um PDF Viewer apontando para essa variável:

Propriedade Document do PDF Viewer: varMeuArquivo

Se o PDF aparece no viewer, você está no caminho certo. O próximo passo é o download.

Download de PDF no Power Apps Canvas usando Attachment e Base64

Passo 2: Converter o PDF para Base64 com JSON

O controle Attachment do Power Apps não aceita diretamente um Blob como valor. Ele precisa de um dado no formato data URI (Base64). Para fazer essa conversão, usamos a função JSON() com o parâmetro JSONFormat.IncludeBinaryData:

Set(varJsonPDF, JSON(varMeuArquivo, JSONFormat.IncludeBinaryData))

Essa função transforma o Blob em uma string JSON que começa com data:application/pdf;base64, seguida dos dados em Base64. Isso é exatamente o que o controle Attachment precisa para interpretar o arquivo como binário válido.

No entanto, o JSON gerado inclui aspas duplas no início e no final da string. Essas aspas precisam ser removidas para que funcione corretamente. Use a função Substitute():

Set(varJsonPDF, Substitute(JSON(varMeuArquivo, JSONFormat.IncludeBinaryData), """, ""))

Agora varJsonPDF contém o data URI limpo, pronto para ser usado no controle Attachment.

Passo 3: Configurar o controle Attachment para download de PDF no Power Apps

O controle Attachment normalmente é inserido dentro de um Form conectado a uma lista do SharePoint. Mas você não precisa do Form para usar o controle isolado — basta copiar o controle de um formulário e colá-lo diretamente na tela.

Para adicionar o controle Attachment sem um formulário:

  1. Insira um Form temporário na tela e conecte a uma lista do SharePoint que tenha coluna de Attachments
  2. O Form vai exibir o controle Attachment automaticamente
  3. Copie (Ctrl+C) o controle Attachment
  4. Delete o Form temporário
  5. Cole (Ctrl+V) o controle Attachment diretamente na tela

Dica alternativa: Se você preferir não usar o Form, selecione o controle Attachment depois de colado e no editor de fórmulas, no campo do nome do controle, substitua pelo nome que desejar. Isso funciona com um simples copiar/colar do nome no bloco de notas e substituição manual.

Passo 4: Configurar a propriedade Items do Attachment

Este é o ponto crítico onde a maioria dos desenvolvedores erra. A propriedade Items do controle Attachment precisa receber uma tabela com as colunas Name e Value. O problema é que, por padrão, quando você inspeciona a fórmula gerada pelo editor, a coluna Value aponta para a coluna errada.

A configuração correta é:

Table({Name: "arquivo.pdf", Value: varJsonPDF})

Atenção: o campo Value deve apontar para varJsonPDF (o Base64), e não para a coluna Name. Esse é o bug silencioso que faz o download falhar com “file wasn’t available on site”. Para corrigir, você precisa editar a fórmula diretamente — substitua no editor de fórmulas a referência incorreta pelo nome correto da variável Base64.

Além disso, configure a propriedade DisplayMode do controle como DisplayMode.View para que o usuário veja apenas o botão de download sem poder deletar o arquivo:

Propriedade DisplayMode: DisplayMode.View

Resultado final: fórmula completa para download de PDF no Power Apps Canvas

No evento OnSelect do seu botão de gerar e baixar PDF, a fórmula completa ficará assim:

Set(varMeuArquivo, PDF(Galeria5)); Set(varJsonPDF, Substitute(JSON(varMeuArquivo, JSONFormat.IncludeBinaryData), """, ""))

E na propriedade Items do controle Attachment:

Table({Name: "relatorio.pdf", Value: varJsonPDF})

Com essa configuração, quando o usuário clicar no arquivo no controle Attachment, o download acontece imediatamente, sem nenhuma chamada externa, sem salvar no SharePoint e sem latência.

Perguntas Frequentes

Posso usar essa técnica para outros formatos além de PDF no Power Apps?

Sim. A mesma lógica funciona para qualquer tipo de arquivo que o Power Apps consiga gerar como Blob. A função JSON(arquivo, JSONFormat.IncludeBinaryData) converte qualquer Blob para Base64, e o controle Attachment aceita qualquer tipo de arquivo. Você só precisa ajustar a extensão no campo Name da coleção.

O download de PDF funciona no app mobile (iOS e Android)?

Sim, mas o comportamento pode variar. No iOS e Android, ao clicar no arquivo no controle Attachment, o sistema geralmente abre o PDF no visualizador nativo do dispositivo em vez de salvar na pasta de downloads. O funcionamento exato depende do sistema operacional e do aplicativo Power Apps instalado.

Por que ocorre o erro “file wasn’t available on site” ao tentar baixar?

Esse erro acontece quando o campo Value da coleção está apontando para a coluna errada (geralmente para Name) ou quando o valor Base64 contém aspas desnecessárias. Verifique se o varJsonPDF foi gerado com o Substitute() para remover as aspas e se a propriedade Items está apontando para a variável correta.

Preciso do SharePoint para usar o controle Attachment no Power Apps?

Para adicionar o controle via Form você precisa de uma fonte de dados com suporte a anexos (como SharePoint). Porém, após copiar o controle e configurar manualmente a propriedade Items com uma tabela estática, ele funciona completamente offline, sem nenhuma conexão com o SharePoint.

Essa técnica tem limitação de tamanho de arquivo?

Sim. O Power Apps Canvas tem um limite de tamanho de dados que podem ser armazenados em variáveis (aproximadamente 1-2 MB dependendo da versão). PDFs muito grandes gerados de galerias com muitos registros podem exceder esse limite. Para arquivos maiores, a abordagem via SharePoint/OneDrive continua sendo recomendada.

Conclusão

O download de PDF no Power Apps Canvas usando o controle Attachment com Base64 é a solução mais eficiente para cenários onde você precisa de um download imediato, sem dependências externas. A técnica usa três funções nativas do Power FX: PDF(), JSON() com IncludeBinaryData e Substitute() — e o resultado é uma experiência de download fluida e profissional para o usuário final.

O ponto-chave que salva horas de debug é garantir que a propriedade Value da coleção de Items aponte para a variável Base64, não para a coluna Name. Assista ao vídeo acima para ver cada passo sendo executado em tempo real, incluindo os erros comuns e como corrigi-los.

Quer aprender mais técnicas avançadas de Power Apps Canvas, Power Automate e Copilot Studio? Acesse a Formação VICO Power e tenha acesso a casos reais com suporte direto.

Compartilhe nas Redes Sociais:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *