Previsualizaciones en línea de PDFs

Intenté eso, establecí cors origins en https://xxxxx.s3.us-east-2.amazonaws.com
también establecí DISCOURSE_ENABLE_CORS: true en /var/discourse/containers/app.yml
pero no está funcionando.

1 me gusta

¿Y ejecutaste ./launcher rebuild app después de hacer cambios en app.yml? También podrías necesitar hacer una actualización forzada del navegador.

2 Me gusta

Por cierto, podrías revisar la sección de archivos de la configuración del administrador para ver si cambiaste alguna configuración que esté afectando esta función. Tampoco creo que se pueda esperar que esta función funcione si estás enlazando a un PDF alojado en otro servidor. Acabo de probar esto en mi sitio y el mismo PDF servido de forma remota no mostró la vista previa.

¡Avísanos si encuentras la fuente del problema!

Muestra de markdown de una publicación donde el enlace remoto no funcionó pero el cargado localmente sí.

remoto:

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

cargado localmente:

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

Cómo se ve:

3 Me gusta

Sí, pero no funcionó.

Cuando habilitas S3 en Discourse


Entonces, por definición, los archivos se almacenan en un dominio diferente.
Supongo que eso aclara el problema. Pero todavía espero que el plugin pueda ser compatible con las instalaciones de Discourse que tienen S3 habilitado.

2 Me gusta

No estoy muy familiarizado con esta configuración. ¿Seguiste estas instrucciones?

1 me gusta

Sí, he tenido S3 (y la configuración relacionada de “medios seguros”) funcionando durante los últimos años sin problemas.
Solo el componente Inline PDF no funciona con esta configuración.

Como referencia, incluso configurando app.yml de esta manera:

DISCOURSE_ENABLE_CORS: true
DISCOURSE_CORS_ORIGIN: ‘*’

no ayuda.

2 Me gusta

Yo también me encontré con este exacto problema y terminé revirtiendo mis cargas de S3 solo para que este TC funcionara, ya que tiene un alto valor para nosotros:

Realmente creo que, dado que esto es official y se fomenta la carga de S3, se debería examinar para ver si se puede hacer que funcione con S3 de alguna manera. Podría ser que los PDF estén específicamente excluidos de las cargas de S3, ¡pero eso sería una porquería ya que algunos son enormes!

6 Me gusta

No creo que nadie discrepe.
Supongo que se trata de concienciación y prioridades.
Al menos en cuanto a la “concienciación”, quizás @Johani, el OP, podría añadir una pequeña nota en el tema de esta discusión de que el componente PDF en línea no funciona con S3 habilitado.
Ahorraría a otros tiempo de solución de problemas y crearía conciencia sobre el problema.

3 Me gusta

Hay un poco de información sobre S3 en estas publicaciones que he extraído del temporizador automático, ¿por si sirven de ayuda?

7 Me gusta

Se fusionó una publicación en un tema existente: Theme-Component Topics project

Sí, eso funciona :smiley:
Como referencia si alguien más necesita esto:

  1. Ve a la consola de AWS, a los buckets https://s3.console.aws.amazon.com/s3/buckets y selecciona el bucket que se utilizó para tu instalación de Discourse

  2. Elige la pestaña de Permisos
    image

  3. Desplázate hacia abajo hasta “Uso compartido de recursos de origen cruzado (CORS)” y escribe:

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

Debería verse así:

11 Me gusta

¡Ojalá hubiera encontrado eso mientras todavía estaba en las cargas de S3!

Puede que necesite revisarlo ahora. @JammyDodger, me pregunto si esas cosas deberían anotarse tanto en S3 como en este OP para que otros no tropiecen con esto.

5 Me gusta

Absolutamente. :+1: Solo estaba esperando alguna confirmación de que funcionó antes de pensar en la mejor manera de hacer una edición. :slightly_smiling_face:

7 Me gusta

Dos ideas, abordando el mismo problema: la vista de Discourse es bastante estrecha, por lo que la mayoría de los PDF son demasiado pequeños para leerlos en línea. Para abordar esto, podríamos
a) ¿hacer que el iframe de PDF sea redimensionable? Ya lo intenté con CSS, pero sin éxito; la cuadrícula subyacente parece estar en el camino.
b) ¿ofrecer un segundo enlace “abrir en una nueva pestaña” además del enlace de descarga? Estoy muy interesado en no descargar demasiadas cosas de nuestro foro.

5 Me gusta

[cita=“Ralf Stockmann, post:111, topic:157649, username:Ralf_Stockmann”]
b) ¿ofrecer un segundo enlace “abrir en una nueva pestaña” además del enlace de descarga? Estoy muy interesado en no descargar demasiadas cosas de nuestro foro.
[/cita]

¡Esto sería una mejora notable! Y no debería ser muy difícil de agregar, creo. Podría intentar hacer un PR (Pull Request) para esto si tengo tiempo en los próximos días.

4 Me gusta

Creo que (b) ya se proporciona como una opción, por ejemplo, en línea o abrir en una nueva pestaña. ¿Quizás una tercera opción para que los usuarios vean en línea y abran en una nueva pestaña? También me gusta esta idea.

(a) puede ser difícil dado lo difícil que puede ser que las cosas se vean bien en una publicación.

3 Me gusta

Me complacería ver un botón de expandir

en la barra de herramientas que muestre el PDF a pantalla completa en lugar de en línea.

3 Me gusta

@Ralf_Stockmann y @Alon1 ¿han probado…

Además, en mi Discourse uso este método…

Incrustar un PDF de Google Drive

(Este es mi método preferido para que los PDF en iFrames sean responsivos; otros métodos suelen fallar en ser responsivos entre navegadores).

  1. Compartir
  2. Copiar enlace para compartir
  3. Abrir enlace para compartir en una nueva pestaña
  4. Hacer clic en los 3 puntos verticales en la esquina superior derecha
  5. Seleccionar “Incrustar elemento”
  6. Copiar el código iFrame mostrado
  7. Pegarlo en el editor de Discourse

Aquí se incrusta un PDF de prueba en Google Drive que puedes << Descargar Aquí >>

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

Así es como se ve… (que también puedes probar en vivo AQUÍ en mi sitio)

3 Me gusta

¡Eso es genial!
Simplemente (1) instalando el componente temático IFrame Lightboxes y (2) agregando la URL de mi propio sitio web a la lista de “dominios de origen de iframe” en la configuración del componente, ¡funciona! Agrega el botón de expandir justo encima de la esquina derecha del PDF en línea

Directamente desde el primer momento :slight_smile:

4 Me gusta

Como todavía no podía abrir PDFs en una nueva pestaña, escribí un pequeño plugin para servir todos los PDFs locales con content-disposition: inline:

4 Me gusta