Kürzlich bat mich ein Kunde, der Drupal-Website des Unternehmens eine neue Funktion hinzuzufügen: PDF-Dateien im Browser anzeigen. Als ich die Optionen auf drupal.org durchforstete, erkannte ich, dass dies die perfekte Gelegenheit war, meinen tatsächlichen Entscheidungsprozess zu dokumentieren, als ich ein neues Modul wählte. Ich sage immer, Module sinnvoll zu wählen, aber jetzt kann man sehen, wie ich denke, dass dies im wirklichen Leben funktioniert.
Definieren Sie, was Sie wollen
Der erste Schritt ist zu definieren, was Sie wollen. In meinem Fall wollte ich:
- Die Möglichkeit, PDF-Dateien in einem Webbrowser anzuzeigen, ähnlich wie in diesem Beispiel. Der Kunde würde PDFs des Unternehmensnewsletters hochladen, und die Besucher könnten sie leicht lesen.
- Die Site ist Drupal 7, daher müsste das Modul mit dieser Hauptversion übereinstimmen. (Drupal 7 ist seit einiger Zeit nicht mehr verfügbar. Wenn also ein Modulentwickler noch keine Drupal 7-Version veröffentlicht hat, wird dies wahrscheinlich nicht der Fall sein.)
- Obwohl der Kunde dies nicht angegeben hat, wollte ich auch vermeiden, auf einen Dienst eines Drittanbieters zu setzen. Ich freue mich, die Videos für Videos auf YouTube oder Vimeo zu posten und sie dann auf einer Drupal-Website einzubetten. Bei PDF-Dateien hätte ich nicht gedacht, dass die mögliche zusätzliche Belichtung den potenziellen Aufwand, den Bruch und die Kosten überwiegen würde. Ich war jedoch offen für einen Drittanbieter, wenn dies die einzige Option war.
- Obwohl ich den Dienst eines Drittanbieters vermeiden wollte, wusste ich, dass meine Wahl wahrscheinlich ein Javascript eines Drittanbieters erfordern würde Bibliothek . Obwohl dies bei zukünftigen Upgrades einen zusätzlichen Schritt bedeuten würde, fühle ich mich im Allgemeinen besser, wenn ich meine eigene Kopie einer Bibliothek ausführen möchte, anstatt mich auf einen Dienst eines Drittanbieters zu verlassen.
- Ich wollte das Modul so leicht und spezifisch wie möglich halten. Ich wollte mich nicht mit radikal neuen Methoden der Handhabung oder Organisation von Mediendateien beschäftigen. Ich wollte etwas mehr wie Colorbox, das Bilder zur besseren Ansicht vergrößert, aber völlig unabhängig davon ist, wie Sie die Bilddateien verwalten. Ich hatte eine Ahnung, dass diese Bibliothek pdf.js sein würde, aber ich war offen für andere Möglichkeiten.
- Wie üblich wollte ich die allgemeinen Richtlinien zur Auswahl eines Drupal-Moduls befolgen. Wählen Sie grundsätzlich ein Modul aus, das bereits einige Zeit (wenn möglich) von einigen tausend Benutzern verwendet wird, mit einem Minimum an Abhängigkeiten, das scheinbar von einem aktiven Entwickler beibehalten wird, der plant, das Projekt in der Zukunft zu unterstützen und dies nicht tut. Eine Lizenzgebühr ist nicht erforderlich.
Suche auf Drupal.org
Im Hinblick auf diese Ziele war der nächste Schritt eine einfache Suche auf Drupal.org. Zeit, in die Kugelgrube von Module Goodness zu springen.
"Vergleich" -Seite für PDF-Module
Mein erster Stopp war (oder hätte sein sollen), diese Seite: Ein Vergleich von PDF-Viewer-Modulen. Drupal.org hat eine exzellente Tradition von Dokumentationsseiten, die die Vor- und Nachteile verschiedener Module in einem Raum darstellen. Es gibt eine zentrale Liste von Vergleichsseiten, die jedoch auch auf der gesamten Site verstreut sind.
Die PDF-Vergleichsseite enthielt vier PDF-Viewer-Module. Ich werde sie hier behandeln, sowie ein paar andere, die ich beim Suchen gefunden habe. Ich fange mit den Kandidaten an, die ich auslassen möchte.
Lassen Sie uns nun genauer untersuchen, warum diese Module für dieses Projekt funktionierten (oder meist nicht).
Datei-Viewer
File Viewer verwendet den Internet Archive BookReader, der mich fasziniert, weil ich ein Internetarchiv-Junkie bin. Jedes Mal, wenn ich dorthin gehe, verspüre ich Angst und Überwältigung in den Bergen der Bücher, die ich aus dem Äther holen kann.
Davon abgesehen sah der Demonstrationsort für mich etwas hässlich aus. Ich könnte damit leben, aber ich bezweifelte, dass mein Kunde dies tun würdepdf.js
sieht so viel stylischer aus.
Bei einem zweiten Blick auf die Projektseite sah ich oben die große mutige Ankündigung:Dieses Modul wurde formal in das PDF-Modul verschoben. Meinetwegen. Bei weniger als 400 Installationen scheint das Zusammenführen mit dem bekannteren PDF-Modul (das wir gleich behandeln werden) einen guten Schritt. Laden Sie niemals ein Modul herunter, das zusammengeführt / verschoben / aufgegeben wurde.
Google Viewer-Dateiformat
Google Viewer File Formatter klingt so: Es ist eine Möglichkeit, Google Docs zum Einbetten von Anzeigen von Dateien in Ihre Webseite zu verwenden. Obwohl mir die Vielseitigkeit von Google Docs gefallen hat, bestand eines meiner Ziele darin, unabhängig von Drittanbietern zu bleiben.
Dieses Modul hatte auch weniger als 100 Installationen.
Ajax Document Viewer
Obwohl "AJAX" ein allgemeiner Begriff von Javascript ist, stellte sich heraus, dass Ajax Document Viewer sich auf einen bestimmten Dienst eines Drittanbieters verlässt. Nur etwa 100 Installationen. Weitergehen …
Verbrühen Sie PDF
Scald PDF hatte nur 40 Installationen, aber ich musste einen Blick darauf werfen, da es eindeutig Teil eines größeren Projekts namens (ja) Scald war. Wie die Scald-Projektseite erklärt hat: " Verbrühung ist eine innovative Einstellung im UmgangMedienatome in Drupal. "
Dieser Satz brachte zwei große rote Fahnen: "innovatives Take" und das Wort "Media" gepaart mit "Atom". "Atom" war offensichtlich ein wiedereinsetzendes Wort für "Ding", das es allein zu einer roten Fahne machte. Drupal hat eine Vorliebe für diese Art leerer Wörter: Knoten , Entität , Merkmal … Je allgemeiner das Wort, desto umfassender können die Änderungen sein.
Als ich weiterblätterte, bestätigte sich mein Verdacht. Ich las aufgeregte Behauptungen, wie Scald meinen Umgang mit Media auf meiner Website grundlegend neu erfinden würde.
Die Wahrheit ist nun, dass Drupal's Media-Handling einige Neuerungen erfordern könnte. Verbrühung ist nicht das einzige ehrgeizige Projekt in diesem Raum.Mit weniger als 1000 Installationen wollte ich jedoch nicht ins Erdgeschoss.
Sicher, zu dieser Zeit im nächsten Jahr könnte Scald die nächsten Ansichten sein. Das würde rocken. Aber es könnte auch Verzicht sein, mit einer (kleinen) Spur gebrochener Standorte, die noch zu weinen übrig bleiben.
Im Moment wollte ich bei einer viel weniger ehrgeizigen und gefährlichen Lösung bleiben. Bitte nur PDFs anzeigen. Das war alles, was ich gefragt habe.
Shadow Box
Shadowbox überraschte mich: Es war angeblich eine einzige Lösung für die Anzeige aller Arten von Medien, von PDFs über Bilder bis hin zu Videos. Dies war nicht so pauschal wie Scald, da es sich nur auf das konzentrieren würde anzeigen Medien ohne völlig neue Konzepte wie "Media Atoms" einzuführen. Aber ich mag Colorbox schon, wie ich schon sagte. Ich wollte diese Entscheidung nicht überdenken.
Ich bemerkte jedoch (mit einem inneren Stöhnen), dass das vorbei ist16,000 installiert wird, könnte Shadowbox eine leistungsfähigere Alternative im selben Bereich sein. ich hätten einen Blick darauf werfen
Das Shadowbox-Drupal-Modul ist im Grunde eine Brücke zu einer Javascript-Bibliothek (Shadowbox.js), daher habe ich die Website der Bibliothek angesehen. Dort entdeckte ich zwei Gründe, um weiterzugehen:
- Die Bibliothek erfordert eine Lizenzgebühr für die kommerzielle Nutzung. Die Gebühr war angemessen genug, aber ich versuche, Open-Source-Software zu vermeiden, die nicht kostenlos ist.
- Eine sorgfältige Suche in den FAQ ergab, dass entgegen der Beschreibung auf der Drupal-Modulseite PDFs vorliegen nicht 100% von der Shadowbox-Bibliothek unterstützt. Hoppla. Gut, dass ich nachgesehen habe.
Die zwei Konkurrenten: "PDF" und "PDF Reader"
Nachdem ich den Rest beseitigt hatte, kam ich zu den beiden offensichtlichen Konkurrenten: PDF und PDF Reader
Diese beiden Projekte hatten wesentliche Gemeinsamkeiten:
- Beide hatten fast 3.000 Installationen, weit mehr als die Alternativen (außer Shadowbox).
- Beide verwendeten die gleiche externe Javascript-Bibliothek,
pdf.js
.
Was ist mit den Unterschieden?
PDF Reader hatte auch die Option für die Integration von Google Docs. In diesem speziellen Fall dachte ich, dass mein Kunde das mögen könnte, also hatte ich die Option gern.
Inzwischen, PDF wurde als gekennzeichnetMitbetreuer suchen
. Dies könnte ein Zeichen dafür sein, dass der Entwickler das Projekt bald aufgeben würde. Andererseits war das letzte Commit vor einer Woche, also war der Entwickler immer noch aktiv.
Auf der anderen Seite, PDF Reader wurde als gekennzeichnetAktiv gewartet
, aber das letzte Commit war vor einem Jahr.
Ohne einen klaren Gewinner entschied ich mich, beide zu testen.
Testen Sie die Anwärter
Ich habe beide Module auf einer Kopie meiner Live-Site getestet. (Egal wie solide und harmlos ein Modul aussieht, versuchen Sie es niemals zuerst auf einer Live-Site. Sie könnten Ihre gesamte Site zerstören.)
Ich war voreingenommen in Richtung PDF Reader weil es mehr Optionen (wie Google Text & Tabellen) zu haben schien als PDF . Also entschied ich mich zu versuchen PDF erstens, um es aus dem Weg zu räumen.
PDF fehlgeschlagen: Kompilierung erforderlich?
Jedoch wenn ich installiert habe PDF und leseREADME.txt
Ich entdeckte ein Problem, das ich auf der Projektseite gesehen, aber ignoriert hatte. Aus irgendeinem Grund scheint es, dass dieses Modul kompiliert werden musspdf.js
manuell. Obwohl die Projektseite vorschlug, dass dies nicht unbedingt erforderlich war,README.txt
schlug vor, dass es war.
Schon seit PDF Reader würde die gleiche Bibliothek verwenden, ohne diesen Schritt zu erfordern, entschied ich mich, es zuerst auszuprobieren. Wenn es nicht klappte, konnte ich immer wieder zurückkehren PDF und versuchen Sie manuell zu kompilierenpdf.js
.
PDF Reader: Erfolg! Art von.
Also versuchte ich es endlich PDF Reader . Dieses Modul bietet ein neues Widget zum Anzeigen vonDatei
Feld. Sie fügen dem gewünschten Inhaltstyp ein Dateifeld hinzu und setzen den Widget-Typ aufPDF Reader
. Dann erstellen Sie einen Knoten dieses Typs und laden Ihre PDF-Datei hoch. Die PDF-Datei wird in eine "Box" auf der Seite eingebettet.
Sie können verschiedene Anzeigeoptionen ausprobieren, indem Sie den Inhaltstyp erneut bearbeiten und die Anzeigeeinstellungen für das Feld ändern.
Ich fand, dass jede Anzeigeoption Vor-und Nachteile hatte:
- DasGoogle Dokumente Der Leser funktionierte gut als Einbettung, aber als ich darauf geklickt habe, um im Vollbildmodus zu erscheinen, landete ich auf einer Seite von Google Docs, in der ich mich entschuldigte, dass mein Tariflimit überschritten wurde. Hoppla. Dies wäre möglicherweise zuverlässiger, wenn ich das Modul an ein zahlendes Google Apps-Konto anschließen würde, aber ich habe mich nicht darum gekümmert, da ich mir ziemlich sicher war, dass mein Kunde das Display nicht mögen würde.
- Daspdf.js Option hat wunderbar funktioniert … auf Firefox und Chrome. Aber als ich den Internet Explorer startete, schien die Box leer zu sein. Anscheinend ist dies ein Problem mit
pdf.js
selbst, nicht die PDF Reader Modul. Ich denke, ich hätte dies angesichts dessen erwarten müssenpdf.js
wird von Mozilla entwickelt und der Internet Explorer ist … selbst. Trotzdem war ich enttäuscht, dass ich nicht gedacht hatte, das zu bestätigenpdf.js
Über alle Browser zuverlässig funktioniert. - Daseinbetten Option war die zuverlässigste. Dies führte Adobe Reader in einer Box auf der Webseite aus. Mein Firefox wollte immer noch laufen
pdf.js
, aber ich denke, das war eine Browsereinstellung. So oder so, solange ein Besucher entweder Firefox oder einen PDF-Viewer wie Adobe Reader hatte, würde das PDF angezeigt.
Am Ende war meine Lösung also die Verwendung der PDF Reader mit demEinbetten Anzeigeoption. Mit dieser Option kann ich ein PDF an einen Drupal-Knoten anhängen und es zuverlässig auf einer Drupal-Webseite anzeigen.
Leider reicht "zuverlässiges" manchmal nicht aus. Nach all dieser Suche musste ich doch einen Fremddienst in Betracht ziehen.