Visualizações em PDF inline

Tentei isso, defini cors origins para https://xxxxx.s3.us-east-2.amazonaws.com
também defini DISCOURSE_ENABLE_CORS: true em /var/discourse/containers/app.yml
mas não está funcionando.

1 curtida

E você executou ./launcher rebuild app após fazer alterações em app.yml? Você também pode precisar fazer uma atualização forçada do navegador.

2 curtidas

Aliás, você pode verificar a seção de arquivos das configurações de administrador para ver se você alterou configurações que estão afetando este recurso. Também não acho que este recurso possa funcionar se você estiver vinculando a um PDF hospedado em outro servidor. Acabei de testar isso no meu site e o mesmo PDF servido remotamente não mostrou a prévia.

Informe-nos se você encontrar a origem do problema!

Exemplo de markdown de post onde o remoto não funcionou, mas o carregado localmente funcionou.

remoto:

[test remote pdf](https://jsoncompare.org/LearningContainer/SampleFiles/PDF/sample-pdf-with-images.pdf)

carregado localmente:

[sample-pdf-with-images.pdf|attachment](upload://uOJLgHidEXnbqPRn2p6yP10ecQU.pdf) (3.8 MB)

como fica:

3 curtidas

sim. mas não funcionou.

Quando você habilita o S3 no Discourse


Então, por definição, os arquivos são armazenados em um domínio diferente.
Acho que isso resolve o problema. Mas ainda espero que o plugin possa ser feito para suportar instalações do Discourse que tenham o S3 habilitado.

2 curtidas

Não estou muito familiarizado com esta configuração. Você seguiu estas instruções?

1 curtida

Sim, tenho o S3 (e a configuração relacionada de “mídia segura”) funcionando há alguns anos sem problemas.
É apenas o componente de PDF inline que não funciona com essa configuração.

Como referência, mesmo configurando o app.yml assim:

DISCOURSE_ENABLE_CORS: true
DISCOURSE_CORS_ORIGIN: ‘*’

não ajuda.

2 curtidas

Eu também me deparei com exatamente este problema e acabei revertendo meus uploads do S3 apenas para fazer este TC funcionar, pois tem alto valor para nós:

Eu realmente acho que, como isso é #oficial e os uploads do S3 são incentivados, isso deveria ser analisado para ver se pode funcionar com o S3 de alguma forma. Pode ser que os PDFs sejam especificamente excluídos dos uploads do S3, mas isso seria péssimo, pois alguns são enormes!

6 curtidas

Não acho que alguém discorde.
Estou imaginando que se trata de conscientização e prioridades.
Pelo menos em relação à “conscientização”, talvez @Johani, o OP, pudesse adicionar uma pequena nota no tópico desta discussão de que o componente PDF inline não funciona com S3 ativado.
Isso pouparia tempo de solução de problemas para outros e aumentaria a conscientização sobre o problema.

3 curtidas

Há algumas informações sobre S3 nestas postagens que retirei do auto-timer, se forem úteis?

7 curtidas

Uma postagem foi mesclada em um tópico existente: Theme-Component Topics project

Sim, isso funciona :smiley:
Para referência, caso mais alguém precise disso:

  1. vá para os buckets do console da AWS https://s3.console.aws.amazon.com/s3/buckets e selecione o bucket que foi usado para sua instalação do Discourse

  2. Escolha a aba Permissões
    image

  3. Role para baixo até "Compartilhamento de recursos entre origens (CORS)" e escreva:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "https://my-site.com"
        ],
        "ExposeHeaders": []
    }
]

Deve ficar assim:

11 curtidas

Quem me dera ter encontrado isso enquanto ainda estava fazendo uploads para o S3!!

Talvez eu precise revisitar isso agora. @JammyDodger, será que esse material deveria ser anotado tanto no S3 quanto nesta OP para que outros não tropeçem nisso.

5 curtidas

Com certeza. :+1: Eu estava apenas esperando alguma confirmação de que funcionou antes de pensar em como melhor fazer uma edição. :slightly_smiling_face:

7 curtidas

Duas ideias, abordando o mesmo problema: a viewport do discourse é bastante estreita, então a maioria dos PDFs é muito pequena para ser lida inline. Para resolver isso, poderíamos

a) tornar o iframe do PDF redimensionável? Já tentei isso com CSS, mas sem sucesso - a grade subjacente parece estar no caminho
b) oferecer um segundo link “abrir em nova aba” ao lado do link de download? Estou muito interessado em não baixar muitas coisas do nosso fórum.

5 curtidas

Isso seria uma melhoria notável! E não deve ser muito difícil de adicionar, eu acho. Talvez eu tente um PR para isso se tiver tempo nos próximos dias.

4 curtidas

Eu acho que (b) já é fornecido como uma opção, por exemplo, inline vs. abrir em nova aba. Talvez uma terceira opção para permitir que os usuários vejam inline e abram em nova aba? Eu também gosto dessa ideia.

(a) pode ser difícil, considerando o quão difícil pode ser fazer as coisas parecerem certas em uma postagem.

3 curtidas

Eu ficaria feliz em ver um botão de expansão

na barra de ferramentas que simplesmente exibe o PDF em tela cheia em vez de inline.

3 curtidas

@Ralf_Stockmann e @Alon1 vocês já tentaram…

Além disso, no meu Discourse eu uso este método…

Incorporar um PDF do Google Drive

(Este é o meu método preferido para que PDFs em iFrames sejam responsivos - outros métodos geralmente falham em ser responsivos entre navegadores.)

  1. Compartilhar
  2. Copiar Link de Compartilhamento
  3. Abrir Link de Compartilhamento em uma Nova Aba
  4. Clicar nos 3 Pontos Verticais no Canto Superior Direito
  5. Selecionar Incorporar Item
  6. Copiar o Código iFrame Exibido
  7. Colar no Editor do Discourse

Um PDF de Teste no Google Drive está incorporado aqui abaixo, que você pode \u003c\u003c Baixar Aqui \u003e\u003e

<iframe src="https://drive.google.com/file/d/1KQ-jn7R0NmZxw955QaPu3lvLFh5zpnDe/preview" width="640" height="480" allow="autoplay"></iframe>

É assim que fica… (que você também pode experimentar ao vivo AQUI no meu site)

3 curtidas

Ótimo!
Simplesmente (1) instalando o componente temático IFrame Lightboxes e (2) adicionando a URL do meu próprio site à lista de “domínios de origem do iframe” nas configurações do componente, funciona! Ele adiciona o botão de expandir logo acima do canto direito do PDF inline

Pronto para usar :slight_smile:

4 curtidas

Como ainda não consegui abrir PDFs em uma nova aba, escrevi um pequeno plugin para servir todos os PDFs locais com content-disposition: inline:

4 curtidas