Abrir PDFs directamente (no mediante descarga) por defecto

Actualmente, el manejo principal de PDFs se realiza mediante una descarga:

allaboutcats.pdf (42.2 KB)

Aunque esto es muy funcional, añade unos cuantos pasos innecesarios para el caso de uso más común: “Quiero leer esto ahora”, especialmente en dispositivos móviles.

La necesidad de descargar o guardar algo es muy secundaria. A veces es necesario, pero normalmente el usuario simplemente quiere leerlo y seguir adelante.

El TC Inline PDF Previews aborda esto al mostrar un PDF incrustado en escritorio, y lo hace con gran efectividad. Sin embargo, omite estas situaciones comunes:

  1. PDFs en dispositivos móviles
  2. Múltiples PDFs (debido al desorden visual)
  3. Visualización de PDFs en una pestaña completa del navegador

Cabe destacar que existen otras formas de descargar un PDF. Pueden descargarse directamente desde un enlace (mediante clic derecho / menú contextual) o desde el visor de PDF basado en navegador que proporciona este TC.

Sugerencia: abrir PDFs en el navegador por defecto

Este pequeño ajuste resuelve ambas situaciones de forma elegante y simplemente se alinea con el comportamiento predeterminado de otros enlaces en Discourse. Así, con el cambio propuesto:

  1. Los enlaces a PDF en móviles suelen abrirse en la misma ventana del navegador
    • permite la visualización con un solo toque
  2. Los enlaces a PDF en escritorio (es decir, por encima del PDF incrustado) se abren en una nueva pestaña
    • permite la visualización completa en una sola pestaña con un clic
  3. Cuando el comportamiento incrustado se suprime deliberadamente (añadiendo un espacio en el texto del enlace)
    • permite la visualización con un solo clic

He agrupado estos cambios en esta PR:

3 Me gusta

¿Alguien de tu equipo podría echar un vistazo a esta solicitud de extracción @david?

Dejé algunos comentarios sobre el código mismo en la solicitud de extracción

Cuando hago clic en este enlace, se abre el PDF en el navegador. No se descarga. ¿Estás viendo algo diferente?

Estoy usando Chrome en macOS. No estamos ejecutando este componente de tema d-pdf-previews en Meta.

2 Me gusta

Aquí en meta.discourse.org, mi enlace de arriba se abre en la misma pestaña que esta página (tal como describes). Esto no cambia en el modo seguro (safe-mode).

Sin embargo, en tres de mis sitios actualizados recientemente (con el TC deshabilitado) intenta una descarga. Este también es el caso con el modo seguro. No estoy seguro de por qué es así. No puedo ver ninguna configuración del sitio que gobierne esto en absoluto.

Cualquiera que sea la razón, ¡mi bifurcación lo soluciona muy bien para mis sitios!

¡Esto no tiene ningún sentido para mí!

1 me gusta

Voy a ver si podemos solucionar esta inconsistencia en el núcleo. Actualizaré aquí con el progreso.

2 Me gusta

¿Algún avance con esto hasta ahora?

1 me gusta

Tenemos un trabajo en curso. Esperamos poder implementarlo en las próximas dos semanas. Es un poco complicado porque hay muchas situaciones diferentes que verificar (cargas locales, s3, compatible con s3, con cdn, sin cdn, etc.).

4 Me gusta

Acabo de revisar un PDF que subí a un tema hoy en un sitio actualizado recientemente y hacer clic en el enlace del PDF abre la URL del PDF en la CDN en mi navegador, por si sirve de algo.

2 Me gusta

Esto debería estar resuelto desde SECURITY: Download allowlist for uploaded files · discourse/discourse@9c0642a · GitHub

Ahora tenemos lógica centralizada para determinar qué archivos deben mostrarse ‘en línea’. Esto significa que los PDF se muestran consistentemente en línea y algunos tipos de archivos menos seguros se sirven consistentemente como descargas. Estos cambios deberían funcionar en todo tipo de almacenamiento de subidas (local y S3, con o sin CDN).

5 Me gusta

Este tema se cerró automáticamente después de 9 días. Ya no se permiten nuevas respuestas.

David, acabo de probar esto, y aunque definitivamente parece solucionado en el escritorio, no parece ser el caso en el móvil.

Cuando hago clic en un enlace PDF en el móvil, obtengo una descarga (lo cual no quiero). Quiero que se abra directamente en el navegador (es decir, lo mismo que en el escritorio), independientemente de si el TC está instalado o no.

¿Puedes dar más detalles sobre tu configuración (S3? ¿CDN?) y el sistema operativo de tu dispositivo móvil?

Al hacer clic en el pdf en el OP aquí en mi iPhone, parece que se abre en línea correctamente.

1 me gusta

¿Qué pasa con los archivos mp4? En la mayoría de los sitios web, los enlaces a mp4 los reproducen de forma natural en el navegador, pero no en Discourse, lo cual es bastante molesto :slight_smile:

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

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

En teoría, mp4 debería servirse incrustado:

lo cual usa:

¿Cómo lograste esto? es decir, ¿cuál es la diferencia con unicyclist.com?

Lo siento, debería haber mencionado la distinción. El último utiliza un complemento: Discourse Video Inline

En meta, Discourse también fuerza las descargas de mp4: https://d11a6trkgmumsb.cloudfront.net/original/4X/3/f/0/3f09f895d21cf0ae897d90c947abb816830b00a2.mp4

2 Me gusta

¡Ha cambiado! Acabo de actualizar de nuevo hoy, y se están abriendo en línea en el móvil sin problemas.

¿Ajustaste algo para nosotros los ‘simples autoalojados (sin CDN/S3)’? ¿O fue alguna cosa tonta de caché?

No se han realizado ajustes desde la corrección de seguridad vinculada anteriormente. Podría haber sido el almacenamiento en caché, especialmente si realizaste la actualización a través de la interfaz de usuario la primera vez. Si ahora has realizado una reconstrucción completa, eso habrá restablecido la caché de NGINX. ¡Me alegra saber que ya funciona!

He abierto un nuevo tema para el problema de los mp4

3 Me gusta

Este tema se cerró automáticamente después de 3 días. Ya no se permiten nuevas respuestas.