Abrir PDFs diretamente (não via download) por padrão

Atualmente, o tratamento principal de PDFs é feito por meio de um download:

allaboutcats.pdf|anexo (42,2 KB)

Embora isso seja muito funcional, adiciona algumas etapas desnecessárias para o caso de uso mais comum: “Eu quero ler isso agora” — especialmente em dispositivos móveis.

A necessidade de baixar/salvar algo é muito secundária. Às vezes é necessária, mas geralmente o usuário apenas quer ler e seguir em frente.

O TC em Inline PDF Previews aborda isso ao servir um PDF embutido no desktop — e faz isso com excelência. No entanto, ele ignora essas situações comuns:

  1. PDFs em dispositivos móveis
  2. Múltiplos PDFs (devido ao excesso visual)
  3. Visualização de PDFs em uma aba completa do navegador

Vale notar que existem outros caminhos para baixar um PDF. Eles podem ser baixados diretamente de um link (por meio de clique com o botão direito / menu de contexto) ou a partir do visualizador de PDF baseado em navegador que este TC fornece.

Sugestão: abrir PDFs no navegador por padrão

Essa pequena alteração resolve bem ambas as situações e simplesmente se integra ao comportamento padrão para outros links no Discourse. Assim, com a mudança proposta:

  1. Links de PDF em dispositivos móveis normalmente abrem na mesma janela do navegador
    • permite visualização com um único toque
  2. Links de PDF no desktop (ou seja, acima do PDF embutido) abrem em uma nova aba
    • permite visualização em uma aba completa com um único clique
  3. Quando o comportamento embutido é deliberadamente suprimido (adicionando um espaço no texto do link)
    • permite visualização com um único clique

Eu agrupei essas alterações neste PR:

3 curtidas

Alguém da sua equipe poderia dar uma olhada nesse PR, @david?

Deixei alguns comentários sobre o código em si no PR

Quando clico neste link, ele abre o PDF no navegador. Não há download. Você está vendo algo diferente?

Estou usando o Chrome no macOS. Não estamos executando esse componente de tema d-pdf-previews no Meta.

2 curtidas

Aqui em meta.discourse.org, meu link acima abre na mesma aba desta página (exatamente como você descreve). Isso não muda em safe-mode.

No entanto, em três dos meus sites atualizados recentemente (com o TC desativado), ele tenta um download. Isso também acontece com o safe-mode. Não sei por que isso ocorre. Não consigo ver nenhuma configuração de site que governe isso.

Qualquer que seja o motivo, meu fork corrige isso bem para os meus sites!

Isso não faz sentido para mim!!

1 curtida

Vou verificar se conseguimos corrigir essa inconsistência no núcleo. Manterei vocês atualizados aqui sobre o progresso.

2 curtidas

Algum progresso com isso até agora?

1 curtida

Nós temos um trabalho em andamento. Esperamos conseguir implementá-lo nas próximas semanas. É um pouco complicado porque há muitas situações diferentes para verificar (uploads locais, s3, compatível com s3, com cdn, sem cdn, etc.).

4 curtidas

Acabei de verificar um PDF que carreguei em um tópico hoje em um site recentemente atualizado e clicar no link do PDF abre a URL do PDF no CDN no meu navegador, só para constar.

2 curtidas

Isso deve ter sido resolvido desde SECURITY: Download allowlist for uploaded files · discourse/discourse@9c0642a · GitHub

Agora temos lógica centralizada para determinar quais arquivos devem ser mostrados ‘inline’. Isso significa que PDFs são consistentemente mostrados inline, e alguns tipos de arquivo menos seguros são consistentemente servidos como downloads. Essas mudanças devem funcionar em todos os tipos de armazenamento de upload (local e S3, com ou sem CDNs).

5 curtidas

Este tópico foi fechado automaticamente após 9 dias. Novas respostas não são mais permitidas.

David, acabei de testar isto - e embora isto esteja definitivamente corrigido no desktop, não parece ser o caso para o celular.

Quando clico em um link de PDF no celular, recebo um download (o que eu não quero). Eu quero que ele abra diretamente no navegador (ou seja, o mesmo que no desktop), independentemente de o TC estar instalado ou não.

Você pode detalhar sua configuração (S3? CDN?) e o sistema operacional do seu dispositivo móvel?

Clicar no PDF no OP aqui no meu iPhone parece abrir embutido corretamente.

1 curtida

E os arquivos mp4? Na maioria dos sites, links para mp4 os reproduzem naturalmente no navegador, mas não no Discourse, o que é bem irritante :slight_smile:

Exemplo: https://unicyclist.com/uploads/default/original/3X/4/f/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

Comportamento esperado: https://d.canapin.dev/uploads/default/original/2X/4/4fb882b8ca5a0b0e3d75ff932506d57325f5582c.mp4

Em teoria, mp4 deve ser servido inline:

o que usa:

Como você conseguiu isso? ou seja, qual é a diferença para unicyclist.com?

Desculpe, eu deveria ter mencionado a distinção. O último usa um plugin: Discourse Video Inline

No meta, o Discourse força o download de mp4 também: https://d11a6trkgmumsb.cloudfront.net/original/4X/3/f/0/3f09f895d21cf0ae897d90c947abb816830b00a2.mp4

2 curtidas

Mudou!!! Acabei de atualizar novamente hoje, e eles estão abrindo em linha no celular perfeitamente.

Você ajustou algo para nós ‘auto-hospedeiros simples (sem CDN/S3)’? Ou foi alguma coisa estúpida de cache?

Nenhuma alteração desde a correção de segurança vinculada acima. Poderia ter sido cache, especialmente se você fez a atualização pela interface do usuário na primeira vez. Se você fez uma reconstrução completa agora, isso terá redefinido o cache do NGINX. Que bom saber que está funcionando agora!

Abri um novo tópico para o problema do mp4

3 curtidas

Este tópico foi fechado automaticamente após 3 dias. Novas respostas não são mais permitidas.