Aperçus de PDF en ligne

:discourse2: Résumé Aperçus PDF en ligne est un composant de thème uniquement pour ordinateur de bureau qui vous permettra de créer des aperçus pour les pièces jointes PDF.
:eyeglasses: Aperçu Aperçu sur Discourse Theme Creator (ordinateur de bureau uniquement)
:hammer_and_wrench: Lien du dépôt https://github.com/discourse/discourse-pdf-previews
:open_book: Nouveau sur les thèmes Discourse ? Guide pour débutants sur l’utilisation des thèmes Discourse

Installer ce composant de thème

Fonctionnalités

avant

après

Comme mentionné ci-dessus, ce composant ne fonctionnera que sur ordinateur de bureau. L’intérêt d’afficher les aperçus sur mobile est très limité, car tout sera trop petit et très difficile à lire.

Ce composant utilise l’implémentation native du navigateur pour rendre les PDF, de sorte que les résultats peuvent varier selon les navigateurs.

Veuillez également noter que les téléchargements de PDF ne sont pas autorisés par défaut dans Discourse. Si vous souhaitez autoriser vos utilisateurs à télécharger des fichiers PDF, vous devrez ajouter cette extension soit à authorized_extensions si vous souhaitez que tous vos utilisateurs puissent télécharger des PDF, soit à authorized_extensions_for_staff si vous souhaitez limiter cela aux membres du personnel.

:information_source: Si vous utilisez S3, vous devrez peut-être également mettre à jour votre politique CORS. Veuillez consulter le message ci-dessous : Inline PDF Previews - #106 by JammyDodger

Comment l’utiliser ?

  1. Installer le composant
  2. Autoriser les téléchargements de PDF
  3. Actualiser la page
  4. Télécharger un PDF

C’est tout. Le reste devrait fonctionner automatiquement.

Paramètres

Nom Description
mode d’aperçu En ligne : Les pièces jointes PDF seront rendues en ligne dans les messages

Nouvel onglet : Les liens de pièces jointes PDF emmèneront l’utilisateur dans un nouvel onglet où le PDF sera rendu

Fonctionnalités supplémentaires

Si vous souhaitez qu’un PDF individuel ne soit pas rendu en ligne, vous pouvez simplement ajouter un espace avant le nom du fichier - par exemple :

Cela s’affichera en ligne

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

Cela ne s’affichera pas en ligne

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

:discourse2: Hébergé par nous ? Les composants de thème sont disponibles pour une utilisation sur nos offres Standard, Business et Entreprise.

68 « J'aime »

J’héberge mes fichiers et images sur S3, et l’aperçu est bloqué par une « politique CORS : l’en-tête ‘Access-Control-Allow-Origin’ est absent ».

Voici ce que dit la console Chrome :

L'accès à fetch vers 'https://travelmassive-discourse-cdn.s3.dualstack.us-west-1.amazonaws.com/original/2X/b/b578f6364592121964e6a2fd4969e5c1222bd909.pdf' (redirigé depuis 'https://lounge.travelmassive.com/uploads/short-url/pTnA3r043WfhDK8HSdPQrtNn8Lf.pdf') depuis l'origine 'https://lounge.travelmassive.com' a été bloqué par une politique CORS : l'en-tête 'Access-Control-Allow-Origin' est absent sur la ressource demandée. Si une réponse opaque répond à vos besoins, définissez le mode de la requête sur 'no-cors' pour récupérer la ressource avec CORS désactivé.

Mise à jour

J’ai pu résoudre ce problème en ajoutant la politique CORS suivante dans la configuration de mon bucket S3.

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>https://mydiscourse.url/</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
2 « J'aime »

Il est nécessaire d’ajouter que si vous voyez ce texte dans le message d’erreur from origin 'https://lounge.travelmassive.com' has been où votre domaine est sans barre oblique / à la fin, alors dans la configuration CORS, vous devez également ajouter votre domaine sans barre oblique à la fin, comme ceci :
https://mydiscourse.url

1 « J'aime »

J’ai remarqué que vos téléchargements sont hébergés sur AWS, donc le problème est probablement lié au CORS (le composant n’est pas actif sur votre site pour que je puisse le confirmer). Consultez le message situé juste en dessous du vôtre.

Merci de l’avoir partagé !

Veuillez noter que ce problème n’affectera que les utilisateurs en auto-hébergement ayant configuré quelque chose comme S3. Les utilisateurs en auto-hébergement qui n’utilisent pas S3 ne rencontreront pas ce problème. Les clients hébergés par CDCK n’auront également pas à s’en soucier, car cela est déjà configuré de leur côté.

Cela dit, la configuration CORS est un peu hors du champ de ce sujet. Si votre bucket de téléchargements n’autorise pas l’accès à votre propre domaine, cela doit être corrigé de toute façon, car cela pourrait causer d’autres problèmes.

Je suis un peu incertain quant à ce qui s’est produit ici. Les deux cas semblent fonctionner pour moi à chaque fois que j’essaie. Nous pouvons simplement attribuer cela à un problème réseau transitoire, mais faites-le-moi savoir si vous le rencontrez à nouveau :+1:

J’ai poussé une petite mise à jour de ce composant qui devrait améliorer la perception du chargement ; il y a maintenant un placeholder basé sur la couleur du thème à la place des styles Iframe par défaut du navigateur. Il n’apparaît que pendant le chargement du fichier, donc 99 % du temps, vous ne le remarquerez même pas.

Étant donné que la plupart des PDF se chargent instantanément, je n’ai pas jugé utile d’ajouter un spinner.

9 « J'aime »

Serait-il possible de rendre l’aperçu PDF supprimable en ajoutant un espace avant le lien de téléchargement, comme pour le oneboxing ? Parfois, vous souhaitez une liste de documents sans aperçus. Parfois, vous souhaitez un aperçu.

9 « J'aime »

Je suis sur Safari sous macOS Catalina, et rien ne désactive l’affichage des PDF dans le navigateur — par exemple, http://www.orimi.com/pdf-test.pdf s’affiche correctement. Cependant, je vois toujours la fenêtre/message « Plug-in bloqué » lorsque j’affiche l’aperçu dans theme-creator.

Les paramètres spécifiques au site dans les préférences de Safari ne diffèrent pas de ceux des autres sites web.

Est-ce que cela arrive aussi à d’autres personnes ?

3 « J'aime »

Ça ne fonctionne toujours pas pour moi sur Safari sous MacOS Big Sur. Aucun paramètre spécial pour les plugins de blog, et d’autres fichiers PDF s’affichent dans le navigateur.

L’inspecteur Web de Safari signale les erreurs suivantes lors du chargement de la page d’aperçu dans theme-creator :
Directive 'worker-src' non reconnue dans la politique de sécurité du contenu (Content-Security-Policy).
Le chargement de blob:https://theme-creator.discourse.org/7b9b62c7-e782-4080-a521-04e3b06aa142 a été refusé car il n'apparaît pas dans la directive object-src de la politique de sécurité du contenu.

3 « J'aime »

Cela constituerait une amélioration majeure pour ce composant ! Est-ce réalisable, @Johani ?

5 « J'aime »

Même problème pour moi sur Firefox, mais seulement après la 2e visite :wink:
Existe-t-il une solution de contournement pour cela ? Une déclaration manuelle dans la configuration CSP ?

Merci

1 « J'aime »

Cela a cessé de fonctionner sur mon site. J’obtiens une grande boîte noire au lieu de l’aperçu du PDF :

Désactiver les extensions via le mode sans échec ne change rien, tout comme la suppression de chaque autre composant du thème.

Cela s’est produit après avoir déplacé les images et les fichiers uploadés vers S3, ce qui pourrait être la cause. J’espère que non, car il n’est pas facile de les déplacer à nouveau !

Je suis bloqué. Dommage, car c’est un excellent composant. Des suggestions ?

2 « J'aime »

Je constate le même comportement avec les uploads S3 activés.

3 « J'aime »

Toujours capable de télécharger le PDF ?
Ça fonctionne toujours pour moi (s3 + secure media et pas de cdn) :thinking:

1 « J'aime »

Oui, nous le sommes. Nous avons la même configuration que toi (je pense).

1 « J'aime »

:thinking:

  • mes liens dans les messages sont sous la forme domain/secure-media-uploads/original/...
  • mais dans la console/réseau, je peux voir que les téléchargements réels proviennent du bucket
    Voyez-vous les identifiants amz ?

Si ce n’est pas le cas, cela pourrait peut-être aider ?

Je me souviens aussi qu’il se passait quelque chose d’étrange lorsque j’essayais de déplacer un message depuis des catégories (ou était-ce un copier-coller ?) ; cela a finalement fonctionné lorsque j’ai réimporté le fichier.

1 « J'aime »

Je rencontre ce même comportement sur une installation Discourse neuve et avec une nouvelle pièce jointe PDF.

3 « J'aime »

Merci @Benjamin_D. Il s’avère que les téléversements sécurisés ne sont pas activés de mon côté, et mes liens semblent tous très bien et fonctionnent parfaitement, comme celui-ci :

The HiNZ eHealth Forum - trusted online digital health discussion

Je suis donc perplexe, surtout quant à la raison pour laquelle cela fonctionne sur deux forums que je gère et pas sur l’autre – S3 étant la seule différence. Et le fait que vous ayez cela qui fonctionne avec S3. Je suis vraiment confus.

1 « J'aime »

Après la mise à jour vers la dernière version de Discourse, les pièces jointes PDF ne s’affichent plus. Quel pourrait être le problème ?

1 « J'aime »

Il peut s’agir d’un conflit avec un autre composant ou un autre thème. Cela fonctionne comme prévu de mon côté. Commencez par désactiver les autres composants et essayez d’utiliser le thème par défaut si le vôtre est différent. Faites de même pour les extensions.

3 « J'aime »

Ok — j’ai fait des progrès. Désactiver les uploads S3 règle le problème pour les nouveaux uploads. Mais je me retrouve avec un mélange S3 / local si je choisis cette voie !

Il se peut que je n’utilise pas le système CDN (CloudFront), qui génère ces erreurs agaçantes sur la page d’administration. Je vais essayer de le configurer et voir si cela fonctionne.

plus tard — non, un CDN ne fait aucune différence.

beaucoup plus tard — j’ai désactivé avec succès les uploads S3 (avec un peu d’effort), donc tout va bien maintenant.

Maintenant, je suis motivé pour l’améliorer ! Y a-t-il une personne compétente et intéressée pour essayer ?

4 « J'aime »

Je cherche un plugin permettant d’ouvrir un PDF dans un nouvel onglet.
Actuellement, mon Discourse ne propose que le téléchargement.
Serait-il possible de réaliser cela avec un thème similaire ?

5 « J'aime »