Récemment, un client m'a demandé d'ajouter une nouvelle fonctionnalité au site Drupal de la société: afficher les fichiers PDF dans le navigateur. En parcourant les options sur drupal.org, je me suis rendu compte que c’était l’occasion idéale de documenter mon processus de prise de décision lorsque j’avais choisi un nouveau module. Je dis toujours de choisir judicieusement les modules, mais vous pouvez maintenant voir comment cela fonctionne dans la vie réelle.
Définissez ce que vous voulez
La première étape consiste à définir ce que vous voulez. Dans mon cas, je voulais:
- La possibilité d'afficher des fichiers PDF dans un navigateur Web, similaire à cet exemple. Le client téléchargerait les fichiers PDF du bulletin d’information de la société et les visiteurs pourraient les lire facilement.
- Le site est Drupal 7, le module devrait donc correspondre à cette version majeure. (Drupal 7 est sorti depuis quelque temps déjà, donc si un développeur de module n'a pas encore publié de version de Drupal 7, il ne le fera probablement pas.)
- Bien que le client ne l'ait pas précisé, je souhaitais également éviter de faire appel à un service tiers. Pour les vidéos, je suis heureux de publier le contenu sur YouTube ou Vimeo, puis de l'intégrer sur un site Drupal, mais pour les fichiers PDF, je ne pensais pas qu'une exposition supplémentaire potentielle l'emporterait sur les inconvénients, les ruptures et les dépenses potentielles. Cependant, j'étais ouvert à un service tiers si c'était la seule option.
- Malgré mon souhait d'éviter un service tiers, je savais que mon choix nécessiterait probablement l'utilisation d'un code Javascript tiers. bibliothèque . Bien que cela ajouterait une étape supplémentaire aux futures mises à niveau, je me sens généralement mieux de gérer ma propre copie d'une bibliothèque plutôt que de compter sur un service tiers.
- Je voulais garder le module aussi léger et spécifique que possible. Je ne voulais pas m'impliquer dans une manière radicalement nouvelle de gérer ou d'organiser les fichiers multimédias. Je voulais quelque chose de plus semblable à Colorbox, qui agrandit les images pour un meilleur affichage, mais reste totalement indépendant de la manière dont vous choisissez de gérer les fichiers image. J'avais l'intuition que cette bibliothèque serait pdf.js, mais j'étais ouvert à d'autres possibilités.
- Comme d'habitude, je souhaitais suivre les instructions générales pour choisir un module Drupal. En gros, choisissez un module qui a déjà été utilisé par quelques milliers de personnes (si possible) pendant un certain temps, avec un minimum de dépendances, qui semble être maintenu par un développeur actif qui envisage de continuer à soutenir le projet et ne le fait pas. t exigent des frais de licence.
Rechercher sur Drupal.org
Avec ces objectifs en tête, l'étape suivante a été une recherche simple sur Drupal.org. Il est temps de sauter dans la fosse à billes de Module Goodness.
Page "Comparaison" pour les modules PDF
Mon premier arrêt était (ou aurait dû être), cette page: une comparaison des modules de visualisation PDF. Drupal.org a une excellente tradition de pages de documentation qui décrivent les avantages et les inconvénients de divers modules dans le même espace. Il existe une liste centrale de pages de comparaison, mais elles sont également dispersées sur tout le site.
La page de comparaison PDF comprenait quatre modules de visualisation PDF. Je vais les couvrir ici, ainsi que quelques autres que j'ai trouvés en cherchant. Je vais commencer par les candidats que j'ai décidé de sauter.
Voyons maintenant pourquoi ces modules ont fonctionné (ou n’ont pas fonctionné) pour ce projet.
Visionneuse de fichiers
File Viewer utilise Internet Archive BookReader, qui m'intrigue parce que je suis un accro à Internet Archive. Chaque fois que j'y vais, je ressens des chatouillis de peur et je suis submergé par les montagnes de livres que je peux cueillir dans l'éther.
Cela étant dit, le site de démonstration m'a semblé un peu moche. Je pourrais vivre avec, mais je doutais que mon client serait, quandpdf.js
a l'air tellement plus élégant.
En outre, lors d’un deuxième regard sur la page du projet, j’ai vu la grande annonce en gras en haut:Ce module a été officiellement transféré au module PDF. C'est suffisant. Avec moins de 400 installations, fusionner avec le module PDF plus populaire (que nous traiterons dans un instant) semble être une bonne chose. Ne téléchargez jamais un module qui a été fusionné / déplacé / abandonné.
Formateur de fichier Google Viewer
Cela ressemble à ceci: le formateur de fichiers de Google Viewer est un moyen d’utiliser Google Documents pour intégrer des affichages de fichiers dans votre page Web. Bien que j'aimais la polyvalence de Google Documents, l'un de mes objectifs était de rester indépendant de tout service tiers.
En outre, ce module avait moins de 100 installations.
Visionneuse de documents Ajax
Bien que "AJAX" soit un terme Javascript général, Ajax Document Viewer s’est avéré s’appuyer sur un service tiers spécifique. Seulement environ 100 installations. Passer à autre chose …
Scald PDF
Scald PDF ne comptait que 40 installations, mais je devais y jeter un coup d'œil, car il faisait clairement partie d'un projet plus vaste appelé (oui) Scald. Comme l'explique la page du projet Scald: " Scald est une approche novatrice de la gestionAtomes de médias à Drupal. "
Cette phrase a soulevé deux énormes drapeaux rouges: "prise novatrice" et le mot "média" associé à "atome". "Atom" était évidemment un mot réutilisé pour "chose", ce qui en faisait un drapeau rouge tout seul. Drupal a un penchant pour ces sortes de mots: nœud , entité , fonctionnalité … Plus le mot est général, plus les changements peuvent être radicaux.
Comme je l'ai fait défiler, mes soupçons ont été confirmés. J'ai lu des affirmations enthousiastes sur la manière dont Scald réinventerait la manière dont j'ai géré Media sur mon site.
La vérité, c’est que la gestion des médias de Drupal pourrait être réinventée. Scald n'est pas le seul projet ambitieux dans cet espace.Cependant, avec moins de 1000 installations à ce jour, je ne voulais pas entrer au rez-de-chaussée.
Bien sûr, à cette époque l'année prochaine, Scald pourrait bien être le prochain point de vue. Cela basculerait. Mais il pourrait également s'agir d'un abandonware, avec une (petite) traînée de sites cassés laissés à pleurer.
Pour le moment, je voulais rester avec une solution beaucoup moins ambitieuse et moins périlleuse. Il suffit d'afficher des fichiers PDF, s'il vous plaît. C'est tout ce que je demandais.
Shadowbox
Shadowbox m'a surpris: il prétendait être une solution unique pour afficher toutes sortes de supports, des PDF aux images en passant par les vidéos. Ce n'était pas aussi radicale que Scald, car il se concentrerait uniquement sur l'affichage médias sans introduire de nouveaux concepts comme "Atomes de médias". Mais j'aime déjà Colorbox, comme je l'ai mentionné. Je ne voulais pas avoir à repenser cette décision.
Cependant, j’ai noté (avec un gémissement intérieur) que plus de16,000 Shadowbox pourrait constituer une alternative plus puissante dans le même espace. je eu jeter un coup d'oeil.
Le module Shadowbox Drupal est en gros un pont vers une bibliothèque Javascript, Shadowbox.js, et j’ai donc consulté le site Web de la bibliothèque. Là, j'ai découvert deux raisons pour passer à autre chose:
- La bibliothèque exige des frais de licence pour une utilisation commerciale. Les frais étaient assez raisonnables, mais j'essaie d'éviter les logiciels libres qui ne sont pas gratuits.
- Une recherche minutieuse dans la FAQ a révélé que, contrairement à la description de la page du module Drupal, les PDF sont ne pas 100% pris en charge par la bibliothèque Shadowbox. Oops. C'est une bonne chose que j'ai vérifiée.
Les deux concurrents: "PDF" et "PDF Reader"
Après avoir éliminé le reste, je viens maintenant aux deux concurrents évidents: PDF et PDF Reader
Ces deux projets présentaient des similitudes clés:
- Tous les deux avaient près de 3 000 installations, soit bien plus que les alternatives (sauf Shadowbox).
- Tous deux utilisaient la même bibliothèque Javascript externe,
pdf.js
.
Qu'en est-il des différences?
Lecteur PDF avait également l'option pour l'intégration de Google Docs. Dans ce cas particulier, j’ai pensé que mon client pourrait l’aimer, donc j’ai aimé avoir l’option.
Pendant ce temps, PDF a été marqué commeRecherche de co-responsable (s)
. Cela pourrait être un signe que le développeur va bientôt abandonner le projet, mais d'un autre côté, le dernier engagement ayant eu lieu la semaine dernière, le développeur était au moins toujours actif.
D'autre part, Lecteur PDF a été marqué commeActivement maintenu
, mais le dernier en date remonte à l’année dernière.
Sans vainqueur, j'ai décidé de les tester tous les deux.
Tester les prétendants
J'ai testé les deux modules sur une copie de mon site actif. (Même si un module apparaît solide et inoffensif, ne l’essayez jamais d’abord sur un site actif. Vous risqueriez de casser tout votre site.)
J'étais partial envers Lecteur PDF , car il semblait avoir plus d'options (telles que Google Docs) que PDF . J'ai donc décidé d'essayer PDF d'abord, pour le sortir de la route.
PDF Fail: Compilation Obligatoire?
Cependant, quand j'ai installé PDF et lisREADME.txt
, J'ai découvert un problème que j'avais vu mais ignoré sur la page du projet. Pour une raison quelconque, ce module semble nécessiter que vous compiliezpdf.js
manuellement. Bien que la page du projet ait suggéré que cela n’était pas nécessairement requis,README.txt
suggéré que c'était.
Puisque Lecteur PDF utiliserait exactement la même bibliothèque sans nécessiter cette étape, j’ai décidé de l’essayer d’abord. Si cela ne fonctionnait pas, je pourrais toujours revenir à PDF et essayez de compiler manuellementpdf.js
.
PDF Reader: le succès! Sorte de.
Alors, j'ai enfin essayé Lecteur PDF . Ce module fournit un nouveau widget permettant d’afficher unFichier
champ. Vous ajoutez un champ de fichier au type de contenu souhaité et définissez le type de widget surLecteur PDF
. Ensuite, vous créez un nœud de ce type et téléchargez votre PDF. Le PDF apparaît incorporé dans une "boîte" sur la page.
Vous pouvez essayer différentes options d’affichage en modifiant à nouveau le type de contenu et en modifiant les paramètres d’affichage du champ.
J'ai trouvé que chaque option d'affichage avait des avantages et des inconvénients:
- leGoogle Docs Le lecteur a bien fonctionné en tant qu’intégration, mais lorsque j’ai cliqué dessus pour passer en mode plein écran, je me suis retrouvé sur une page Google Documents qui s’est excusé du dépassement de ma limite de débit. Oops. Cela serait peut-être plus fiable si je connectais le module à un compte Google Apps payant, mais je n'ai pas pris la peine de le savoir, car j'étais à peu près sûr que mon client n'aimerait pas l'affichage.
- lepdf.js option a fonctionné à merveille … sur Firefox et Chrome. Mais quand j'ai lancé Internet Explorer, la boîte semblait vide. Apparemment, c'est un problème avec
pdf.js
lui-même, pas le Lecteur PDF module. Je suppose que j'aurais dû m'y attendre, étant donné quepdf.js
est développé par Mozilla et Internet Explorer est … lui-même. Pourtant, j’ai été déçu de ne pas avoir pensé à confirmer cela.pdf.js
a fonctionné de manière fiable sur tous les navigateurs en premier lieu. - leintégrer l'option était la plus fiable. Cela a en fait exécuté Adobe Reader dans une boîte sur la page Web. Mon Firefox a quand même préféré courir
pdf.js
, mais je pense que c’était un paramètre de navigateur. Quoi qu'il en soit, tant qu'un visiteur dispose de Firefox ou d'un visualiseur PDF tel qu'Adobe Reader, le fichier PDF s'affichera.
Donc, finalement, ma solution a été d’utiliser le Lecteur PDF avec leIntégrer option d'affichage. Cette option me permettrait de joindre un fichier PDF à un nœud Drupal et de l'afficher de manière fiable sur une page Web Drupal.
Malheureusement, parfois, "fiable" ne suffit pas. Après toutes ces recherches, je devais envisager un service tiers.