Visualizações em PDF inline

:discourse2: Resumo Pré-visualizações de PDF embutidas é um componente de tema apenas para desktop que permitirá que você crie pré-visualizações para anexos em PDF.
:eyeglasses: Pré-visualização Pré-visualizar no Criador de Temas do Discourse (apenas desktop)
:hammer_and_wrench: Link do Repositório https://github.com/discourse/discourse-pdf-previews
:open_book: Novo em Temas do Discourse? Guia para iniciantes sobre o uso de Temas do Discourse

Instalar este componente de tema

Funcionalidades

antes

depois

Como mencionado acima, este componente funcionará apenas em desktop. Há muito pouco benefício em mostrar as pré-visualizações no mobile, já que tudo ficará tão pequeno e muito difícil de ler.

Este componente usa a implementação nativa do navegador para renderizar os PDFs, então os resultados parecerão diferentes em diferentes navegadores.

Além disso, note que o upload de PDFs não é permitido por padrão no Discourse. Se você quiser permitir que seus usuários façam upload de arquivos PDF, precisará adicionar essa extensão às authorized_extensions se quiser que todos os seus usuários possam fazer upload de PDFs, ou às authorized_extensions_for_staff se quiser limitar isso a membros da equipe.

:information_source: Se estiver usando S3, talvez seja necessário atualizar sua política de CORS. Consulte a postagem abaixo: Inline PDF Previews - #106 by JammyDodger

Como uso?

  1. instale o componente
  2. permita uploads de PDF
  3. atualize a página
  4. faça upload de um PDF

É isso. O resto deve funcionar automaticamente.

Configurações

Nome Descrição
modo de pré-visualização Embutido: Anexos de PDF serão renderizados embutidos dentro das postagens

Nova Aba: Links de anexos de PDF levarão o usuário a uma nova aba onde o PDF será renderizado

Funcionalidades Adicionais

Se você quiser que um PDF individual não seja renderizado embutido, basta adicionar um espaço antes do nome do arquivo - por exemplo:

Isso será exibido embutido

[sample-pdf.pdf|attachment](upload://usvbcKiQSWqA3w10gnf5PtydiXR.pdf) (82.9 KB)

Isso não será exibido embutido

[ sample-pdf.pdf|attachment](upload://usvbcKiQSWqA3w10gnf5PtydiXR.pdf) (82.9 KB)

:discourse2: Hospedado por nós? Componentes de tema estão disponíveis para uso em nossos planos Standard, Business e Enterprise.

68 curtidas

I’m hosting my uploads and images on S3, and the preview is blocked by a “CORS policy: No ‘Access-Control-Allow-Origin’ header is present”.

Below is what Chrome console says:

Access to fetch at 'https://travelmassive-discourse-cdn.s3.dualstack.us-west-1.amazonaws.com/original/2X/b/b578f6364592121964e6a2fd4969e5c1222bd909.pdf' (redirected from 'https://lounge.travelmassive.com/uploads/short-url/pTnA3r043WfhDK8HSdPQrtNn8Lf.pdf') from origin 'https://lounge.travelmassive.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Update

I was able to fix this by adding the following CORS policy in my S3 bucket configuration.

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>https://mydiscourse.url/</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
2 curtidas

É necessário acrescentar que, se você vir esta mensagem de erro from origin 'https://lounge.travelmassive.com' has been, onde seu domínio não possui uma barra / no final, então na configuração do CORS você também deve adicionar seu domínio sem a barra no final, assim:
https://mydiscourse.url

1 curtida

Percebi que seus uploads estão na AWS, então o problema provavelmente está relacionado ao CORS (o componente não está ativo no seu site para que eu possa confirmar). Veja a postagem logo abaixo da sua.

Obrigado por compartilhar isso!

Observe que esse problema afetará apenas usuários que fazem hospedagem própria e configuraram algo como o S3. Usuários de hospedagem própria que não estão usando o S3 não enfrentarão esse problema. Clientes hospedados pela CDCK também não precisarão se preocupar com isso, pois já possuem essa configuração.

Dito isso, a configuração do CORS está um pouco fora do escopo deste tópico. Se o bucket de uploads não permitir o acesso ao seu próprio domínio, isso precisa ser corrigido de qualquer forma, pois podem haver outros problemas causados por isso.

Estou um pouco inseguro sobre o que aconteceu aqui. Ambos os casos parecem funcionar para mim toda vez que tento. Podemos atribuir isso a um problema transitório de rede, mas por favor, me avise se você vir isso novamente :+1:

Empurrei uma pequena atualização para este componente que deve melhorar a percepção de carregamento; agora há um placeholder baseado na cor do tema em vez dos estilos padrão do Iframe do navegador. Ele só aparece enquanto o arquivo está sendo carregado, então 99% das vezes você nem vai notar.

Considerando que a maioria dos PDFs carrega instantaneamente, não achei que valesse a pena adicionar um spinner.

9 curtidas

Seria possível fazer com que a Pré-visualização de PDF seja suprimida ao adicionar um espaço antes do link de upload, como acontece com o oneboxing? Às vezes, você quer uma lista de documentos e não pré-visualizações. Outras vezes, você quer uma pré-visualização.

9 curtidas

Estou usando o Safari no MacOS Catalina e não tenho nada desativando a exibição de PDFs no navegador — por exemplo, http://www.orimi.com/pdf-test.pdf carrega normalmente. Mas ainda estou recebendo a janela/mensagem “Plug-in Bloqueado” ao visualizar a prévia no theme-creator.

As configurações específicas do site nas preferências do Safari não são diferentes das de outros sites.

Isso está acontecendo com mais alguém?

3 curtidas

Ainda não está funcionando para mim no Safari no macOS Big Sur. Não há configurações especiais para plugins de blog, e outros PDFs são exibidos no navegador.

O Inspetor Web do Safari apresenta as seguintes reclamações ao carregar a página de pré-visualização no theme-creator:
Diretiva 'worker-src' do Content-Security-Policy não reconhecida.
A carga de blob:https://theme-creator.discourse.org/7b9b62c7-e782-4080-a521-04e3b06aa142 foi recusada porque não aparece na diretiva object-src da Política de Segurança de Conteúdo.

3 curtidas

Isso seria uma grande melhoria para este componente! É viável, @Johani?

5 curtidas

O mesmo problema ocorre comigo no Firefox, mas apenas após a segunda visita :wink:
Existe alguma solução alternativa para isso? Declaração manual na configuração do CSP?

Obrigado

1 curtida

Isso parou de funcionar no meu site. Em vez da prévia do PDF, aparece uma grande caixa preta:

Desativar plugins via Modo Seguro não faz diferença, assim como remover todos os outros componentes do Tema.

Isso ocorreu após mover as imagens e uploads de arquivos para o S3, o que pode ser o culpado. Espero que não, pois não é fácil reverter isso!

Estou sem ideias. Que pena, pois é um ótimo componente. Alguma sugestão?

2 curtidas

Estou observando o mesmo comportamento com uploads no S3 ativado.

3 curtidas

Você ainda consegue baixar o PDF?
Está funcionando para mim (s3 + mídia segura e sem CDN) :thinking:

1 curtida

Sim, conseguimos. Temos a mesma configuração que você (acho).

1 curtida

:thinking:

  • meus links nas mensagens estão no formato domain/secure-media-uploads/original/...
  • mas no console/rede consigo ver que os downloads reais vêm do bucket
    Você vê a credencial amz?

Se não, talvez isso ajude?

Também me lembro de que algo estranho acontecia quando tentei mover uma postagem de categorias (ou era uma cópia/cola?). No final, funcionou quando reenviei o arquivo.

1 curtida

Estou enfrentando o mesmo comportamento em uma instalação nova do Discourse e com um anexo PDF recém-adicionado.

3 curtidas

Obrigado, @Benjamin_D. Acontece que não tenho o upload seguro ativado, e meus links ficam ótimos e funcionam perfeitamente, como este aqui:

The HiNZ eHealth Forum - trusted online digital health discussion

Então estou sem ideias — especialmente sobre o motivo de funcionar em dois fóruns que eu administro e não no outro — sendo o S3 a única diferença. E que você consegue fazer funcionar com o S3. Estou realmente confuso.

1 curtida

Após atualizar para a versão mais recente do Discourse, os anexos PDF não são mais exibidos. Qual poderia ser o problema?

1 curtida

Pode ser um conflito com outro componente ou tema. Está funcionando como esperado para mim. Comece desativando outros componentes e tente usar o tema padrão, se o seu for diferente. O mesmo vale para plugins.

3 curtidas

Ok — fiz progresso. Desativar os uploads para o S3 resolve o problema para novos uploads. Mas fico com uma bagunça entre S3 e local se seguir por esse caminho!

Pode ser que eu não esteja usando o tal do CDN (CloudFront), que gera os erros irritantes na página de administração. Vou tentar configurá-lo e ver se funciona.

mais tarde — não, um CDN não faz diferença.

muito mais tarde — consegui remover os uploads para o S3 com sucesso (com um pouco de suor), então está tudo certo agora.

Agora, estou animado para melhorar isso! Tem alguma pessoa esperta com as habilidades necessárias interessada em tentar?

4 curtidas

Estou procurando um plugin que permita abrir o PDF em uma nova aba.
O comportamento atual do meu Discourse é permitir apenas o download.
Seria possível fazer isso com um tema semelhante?

5 curtidas