Anteprime PDF in linea

Ci ho provato, ho impostato cors origins su https://xxxxx.s3.us-east-2.amazonaws.com
ho anche impostato DISCOURSE_ENABLE_CORS: true in /var/discourse/containers/app.yml
ma non funziona.

1 Mi Piace

E hai eseguito ./launcher rebuild app dopo aver apportato modifiche a app.yml? Potrebbe anche essere necessario eseguire un hard refresh del browser.

2 Mi Piace

Tra l’altro, potresti controllare la sezione dei file delle impostazioni di amministrazione per vedere se hai modificato impostazioni che influiscono su questa funzionalità. Inoltre, non credo che questa funzionalità possa funzionare se stai collegando un PDF ospitato su un altro server. Ho appena testato questo sul mio sito e lo stesso PDF servito da remoto non ha mostrato l’anteprima.

Facci sapere se trovi la fonte del problema!

Esempio di markdown del post in cui il remoto non ha funzionato ma quello caricato localmente ha funzionato.

remoto:

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

caricato localmente:

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

Come appare:

3 Mi Piace

Sì, ma non ha funzionato.

Quando abiliti S3 in Discourse


Allora per definizione i file vengono archiviati su un dominio diverso.
Suppongo che questo chiarisca il problema. Ma spero ancora che il plugin possa essere realizzato per supportare le installazioni di Discourse che hanno S3 abilitato.

2 Mi Piace

Non ho molta familiarità con questa configurazione. Hai seguito queste istruzioni?

1 Mi Piace

Sì, ho S3 (e la relativa impostazione “media sicura”) funzionante da un paio d’anni senza problemi.
È solo il componente PDF inline che non funziona con questa impostazione.

come riferimento, anche impostando app.yml in questo modo:

DISCOURSE_ENABLE_CORS: true
DISCOURSE_CORS_ORIGIN: ‘*’

non aiuta

2 Mi Piace

Ho riscontrato esattamente questo problema e ho finito per invertire i miei caricamenti S3 solo per far funzionare questo TC, poiché ha un alto valore per noi:

Penso davvero che, dato che si tratta di #ufficiale e i caricamenti S3 sono incoraggiati, questo dovrebbe essere esaminato per vedere se può funzionare con S3 in qualche modo. Potrebbe essere che i PDF siano specificamente esclusi dai caricamenti S3, ma sarebbe un peccato dato che alcuni sono enormi!

6 Mi Piace

Non credo che qualcuno non sarebbe d’accordo.
Suppongo che si tratti di consapevolezza e priorità.
Almeno per quanto riguarda la “consapevolezza”, forse @Johani, l’OP, potrebbe aggiungere una piccola nota nell’argomento di questa discussione sul fatto che il componente PDF inline non funziona con S3 abilitato.
Risparmierebbe ad altri il tempo di risolvere i problemi e aumenterebbe la consapevolezza del problema.

3 Mi Piace

Ci sono alcune informazioni su S3 in questi post che ho recuperato dall’auto-timer, se possono essere d’aiuto?

7 Mi Piace

Un post è stato unito a un argomento esistente: Theme-Component Topics project

Sì, funziona :smiley:
Per riferimento, se qualcun altro ne avesse bisogno:

  1. vai alla console AWS, secchi https://s3.console.aws.amazon.com/s3/buckets e seleziona il bucket utilizzato per la tua installazione di Discourse

  2. Scegli la scheda Permessi
    image

  3. Scorri fino a “Condivisione risorse tra origini (CORS)” e scrivi:

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

Dovrebbe apparire così:

11 Mi Piace

Magari l’avessi trovato mentre ero ancora sui caricamenti S3!!

Potrebbe essere necessario rivederlo ora. @JammyDodger, mi chiedo se quelle cose dovrebbero essere annotate sia sull’S3 che su questo OP in modo che altri non inciampino su questo.

5 Mi Piace

Assolutamente. :+1: Stavo solo aspettando una conferma che funzionasse prima di pensare a come apportare al meglio una modifica. :slightly_smiling_face:

7 Mi Piace

Due idee, che affrontano lo stesso problema: la viewport di discourse è piuttosto stretta, quindi la maggior parte dei PDF è troppo piccola per essere letta inline. Per affrontare questo problema, potremmo

a) rendere l’iframe del PDF ridimensionabile? Ho già provato con CSS, ma senza successo: la griglia sottostante sembra essere d’intralcio
b) offrire un secondo link “apri in una nuova scheda” oltre al link per il download? Sono molto interessato a non scaricare troppe cose dal nostro forum.

5 Mi Piace

[citazione=“Ralf Stockmann, post:111, topic:157649, username:Ralf_Stockmann”]
b) offrire un secondo link “apri in una nuova scheda” oltre al link per il download? Sono molto interessato a non scaricare troppa roba dal nostro forum.
[/citazione]

Questo sarebbe un netto miglioramento! E non dovrebbe essere troppo difficile da aggiungere, credo. Potrei provare a fare una PR (pull request) per questo se dovessi avere tempo nei prossimi giorni.

4 Mi Piace

Penso che (b) sia già fornito come opzione, ad esempio inline o apri in una nuova scheda. Forse una terza opzione per consentire agli utenti di vedere inline e aprire in una nuova scheda? Mi piace anche questa idea.

(a) potrebbe essere difficile, dato quanto può essere difficile far apparire le cose giuste in un post.

3 Mi Piace

Sarei felice di vedere un pulsante di espansione

sulla barra degli strumenti che mostri semplicemente il PDF a schermo intero invece che inline.

3 Mi Piace

@Ralf_Stockmann e @Alon1 avete provato…

Inoltre, sul mio Discourse uso questo metodo…

Incorpora un PDF da Google Drive

(Questo è il mio metodo preferito in modo che i PDF in iFrame siano reattivi - altri metodi falliscono per lo più nell’essere reattivi cross-browser.)

  1. Condividi
  2. Copia Link di Condivisione
  3. Apri Link di Condivisione in una Nuova Scheda
  4. Fai clic sui 3 puntini verticali nell’angolo in alto a destra
  5. Seleziona Incorpora elemento
  6. Copia il codice iFrame visualizzato
  7. Incollalo nell’editor di Discourse

Un PDF di prova su Google Drive è incorporato qui sotto che puoi << Scaricare Qui >>

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

Ecco come appare… (che puoi anche provare dal vivo QUI sul mio sito)

3 Mi Piace

Fantastico!
Semplicemente (1) installando il componente tematico IFrame Lightboxes e (2) aggiungendo l’URL del mio sito web all’elenco dei “domini di origine iframe” nelle impostazioni del componente, funziona! Aggiunge il pulsante di espansione proprio sopra l’angolo destro dell’inline PDF

Subito pronto all’uso :slight_smile:

4 Mi Piace

Dato che non sono ancora riuscito ad aprire i PDF in una nuova scheda, ho scritto un piccolo plugin per servire tutti i PDF locali con content-disposition: inline:

4 Mi Piace