Onlangs vroeg een klant me om een nieuwe functie toe te voegen aan de Drupal-site van het bedrijf: PDF-bestanden weergeven in de browser. Toen ik de opties op drupal.org verkende, besefte ik dat dit een perfecte kans was om mijn daadwerkelijke besluitvormingsproces te documenteren toen ik een nieuwe module koos. Ik zeg altijd dat ik modules verstandig moet kiezen, maar nu kun je zien hoe ik denk dat dit in het echte leven werkt.
Bepaal wat u wilt
De eerste stap is om te definiëren wat je wilt. In mijn geval wilde ik:
- De mogelijkheid om PDF-bestanden in een webbrowser te bekijken, vergelijkbaar met dit voorbeeld. De klant zou PDF's van de bedrijfsnieuwsbrief uploaden en bezoekers zouden ze gemakkelijk kunnen lezen.
- De site is Drupal 7, dus de module moet overeenkomen met die hoofdversie. (Drupal 7 is nu al een tijdje uit, dus als een moduleontwikkelaar nog geen Drupal 7-versie heeft uitgebracht, zullen ze dat waarschijnlijk niet doen.)
- Hoewel de klant dit niet heeft aangegeven, wilde ik ook voorkomen dat ik een beroep deed op een service van derden. Voor video's plaats ik de inhoud graag op YouTube of Vimeo en vervolgens in te voegen op een Drupal-site, maar voor pdf's dacht ik niet dat de mogelijke extra belichting zou opwegen tegen de potentiële problemen, breuk en kosten. Ik stond echter open voor een service van derden als dit de enige optie was.
- Ondanks mijn wens om een service van derden te vermijden, wist ik dat mijn keuze waarschijnlijk een Javascript van derden zou vereisen bibliotheek . Hoewel dit een extra stap zou toevoegen aan toekomstige upgrades, voel ik me over het algemeen beter over het beheren van mijn eigen exemplaar van een bibliotheek in plaats van een beroep te doen op een service van een derde partij.
- Ik wilde de module zo licht en specifiek mogelijk houden. Ik wilde me niet bemoeien met een radicaal nieuwe manier van omgaan met of het organiseren van mediabestanden. Ik wilde iets meer zoals Colorbox, dat afbeeldingen vergroot voor een betere weergave, maar volledig onafhankelijk blijft van hoe u ervoor kiest om de afbeeldingsbestanden te beheren. Ik had het vermoeden dat deze bibliotheek pdf.js zou zijn, maar ik stond open voor andere mogelijkheden.
- Zoals gewoonlijk wilde ik de algemene richtlijnen volgen voor het kiezen van een Drupal-module. Kies in principe een module die al een tijdje in gebruik is door een paar duizend mensen (indien mogelijk), met een minimum aan afhankelijkheden, die lijkt te worden onderhouden door een actieve ontwikkelaar die van plan is het project in de toekomst te blijven ondersteunen en niet doet. t vereist licentiekosten.
Zoeken op Drupal.org
Met deze doelen in gedachten was de volgende stap een eenvoudige zoekactie op Drupal.org. Tijd om in de Ball Pit van Module Goodness te springen.
"Vergelijking" -pagina voor PDF-modules
Mijn eerste stop was (of had moeten zijn), deze pagina: een vergelijking van PDF-kijkermodules. Drupal.org heeft een uitstekende traditie van documentatiepagina's die de voor- en nadelen van verschillende modules in dezelfde ruimte beschrijven. Er is een centrale lijst met vergelijkingspagina's, maar deze zijn ook verspreid over de site.
De PDF-vergelijkingspagina bevatte vier PDF-viewermodules. Ik zal ze hier behandelen, evenals een paar anderen die ik heb gevonden bij het zoeken. Ik zal beginnen met de kandidaten die ik besloten over te slaan.
Laten we nu ingaan op de details van waarom deze modules (of meestal niet) voor dit project werkten.
File Viewer
File Viewer maakt gebruik van de Internet Archive BookReader, die me intrigeerde omdat ik een junk voor internetarchieven ben. Elke keer als ik daarheen ga, voel ik kietelen van angst en overweldig in de bergen boeken die ik uit de ether kan plukken.
Dat gezegd hebbende, de demonstratiesite leek me een beetje lelijk. Ik zou ermee kunnen leven, maar ik betwijfelde of mijn cliënt dat wel zou doenPDF.js
ziet er zoveel stijlvoller uit.
Ook, bij een tweede blik op de projectpagina, zag ik de grote gedurfde aankondiging bovenaan:Deze module is formeel verplaatst naar de PDF-module. Eerlijk genoeg. Met minder dan 400 installaties lijkt samenvoegen met de meer populaire PDF-module (die we in een ogenblik zullen behandelen) een goede zet. Download nooit een module die is samengevoegd / verplaatst / verlaten.
Google Viewer-bestandsformattering
Google Viewer File Formatter is wat het lijkt: een manier om Google Docs te gebruiken om weergaven van bestanden in uw webpagina in te sluiten. Hoewel ik de veelzijdigheid van Google Documenten leuk vond, was een van mijn doelen om onafhankelijk te blijven van services van derden.
Bovendien had deze module minder dan 100 installaties.
Ajax Document Viewer
Hoewel "AJAX" een algemene Javascript-term is, bleek Ajax Document Viewer te vertrouwen op een specifieke service van derden. Slechts ongeveer 100 installaties. Verder gaan…
Scald PDF
Scald PDF had slechts 40 installaties, maar ik moest een kijkje nemen, omdat het duidelijk deel uitmaakte van een groter project genaamd (ja) Scald. Zoals de projectpagina van Scald uitlegde: " Scald is een innovatieve kijk op hoe te handelenMedia Atomen in Drupal. "
Die zin hief twee enorme rode vlaggen op: "innovatieve take" en het woord "Media" gecombineerd met "Atom". "Atoom" was duidelijk een hergebruikt woord voor "ding", waardoor het op zichzelf een rode vlag werd. Drupal heeft een voorliefde voor deze woorden van het lege vak: knooppunt , entiteit , voorzien zijn van … Hoe algemener het woord, des te meer vegen de veranderingen kunnen zijn.
Terwijl ik naar beneden scrolde, werden mijn vermoedens bevestigd. Ik lees opgewonden beweringen over hoe Scald feitelijk opnieuw uitvond hoe ik Media op mijn site behandelde.
De waarheid is dat de media-afhandeling van Drupal wat heruitvinding zou kunnen gebruiken. Scald is niet het enige ambitieuze project in deze ruimte.Met minder dan 1000 installaties tot nu toe wilde ik echter niet instappen op de begane grond.
Natuurlijk, tegen die tijd volgend jaar is Scald wellicht het volgende aantal weergaven. Dat zou rocken. Maar het kan ook abandonware zijn, met een (klein) spoor van kapotte sites overgelaten om te huilen.
Voor nu wilde ik vasthouden aan een veel minder ambitieuze en gevaarlijke oplossing. Gewoon PDF's weergeven, alstublieft. Dat is alles wat ik vroeg.
Schaduw doos
Shadowbox verraste me: het beweerde een enkele oplossing te zijn voor het weergeven van allerlei soorten media, van PDF's tot afbeeldingen en video. Dit was niet zo vegen als Scald, omdat het alleen op zou focussen weergeven media zonder geheel nieuwe concepten zoals "Media Atomen" te introduceren. Maar ik hou al van Colorbox, zoals ik al zei. Ik wilde die beslissing niet heroverwegen.
Ik merkte echter (met een innerlijke zucht) dat met over16,000 installeert, zou Shadowbox een krachtiger alternatief kunnen zijn in dezelfde ruimte. ik had een kijkje nemen.
De Shadowbox Drupal-module is eigenlijk een brug naar een JavaScript-bibliotheek, Shadowbox.js, dus ik heb de website van de bibliotheek bekeken. Daar ontdekte ik twee redenen om verder te gaan:
- De bibliotheek vereist licentiekosten voor commercieel gebruik. De vergoeding was redelijk genoeg, maar ik probeer open-source software te vermijden die niet gratis is.
- Een zorgvuldig onderzoek van de FAQ onthulde dat, in tegenstelling tot de beschrijving op de Drupal-modulepagina, PDF's dat wel zijn niet 100% ondersteund door de Shadowbox-bibliotheek. Oeps. Gelukkig heb ik gecontroleerd.
The Two Contenders: "PDF" en "PDF Reader"
Nadat ik de rest had uitgeschakeld, kwam ik nu bij de twee voor de hand liggende concurrenten: PDF en PDF Reader
Deze twee projecten hadden belangrijke overeenkomsten:
- Beiden hadden bijna 3.000 installaties, veel meer dan de alternatieven (behalve Shadowbox).
- Beide gebruikten dezelfde externe JavaScript-bibliotheek,
PDF.js
.
Hoe zit het met verschillen?
PDF lezer had ook de optie voor integratie met Google Documenten. In dit specifieke geval dacht ik dat mijn cliënt dat misschien leuk zou vinden, dus ik vond het leuk om de optie te hebben.
Ondertussen, PDF was gemarkeerd alsOp zoek naar mede-onderhouder (s)
. Dat zou een teken kunnen zijn dat de ontwikkelaar het project snel zou verlaten, maar aan de andere kant was de meest recente commit een week geleden, dus de ontwikkelaar was tenminste nog steeds actief.
Anderzijds, PDF lezer was gemarkeerd alsActief onderhouden
, maar de meest recente commit was een jaar geleden.
Zonder een duidelijke winnaar, besloot ik ze allebei te testen.
De deelnemers testen
Ik heb beide modules getest op een kopie van mijn live site. (Het maakt niet uit hoe solide en onschadelijke een module wordt weergegeven, probeer het nooit eerst op een live site. Je kunt je hele site doorbreken.)
Ik was bevooroordeeld naar PDF lezer , omdat het meer opties leek te hebben (zoals Google Documenten) dan PDF . Dus besloot ik het te proberen PDF ten eerste om het uit de weg te ruimen.
PDF Fail: compilatie vereist?
Echter toen ik installeerde PDF en leesREADME.txt
, Ik ontdekte een probleem dat ik had gezien maar genegeerd op de projectpagina. Om de een of andere reden lijkt deze module vereist dat je compileertPDF.js
handmatig. Hoewel de projectpagina suggereerde dat dit niet noodzakelijk vereist was,README.txt
stelde dat het was.
Sinds PDF lezer zou exact dezelfde bibliotheek gebruiken zonder deze stap te hoeven doen, ik besloot het toch als eerste te proberen. Als het niet werkte, kon ik altijd teruggaan naar PDF en probeer handmatig te compilerenPDF.js
.
PDF Reader: succesvol! Soort van.
Dus uiteindelijk probeerde ik het PDF lezer . Deze module biedt een nieuwe widget voor het weergeven van eenhet dossier
veld. U voegt een bestandveld toe aan het gewenste inhoudstype en stelt het widgettype in opPDF lezer
. Vervolgens maakt u een knooppunt van dit type aan en uploadt u uw PDF. De PDF wordt ingesloten in een "vak" op de pagina.
U kunt verschillende weergaveopties proberen door het inhoudstype opnieuw te bewerken en de weergave-instellingen voor het veld te wijzigen.
Ik ontdekte dat elke weergaveoptie voor- en nadelen had:
- DeGoogle documenten lezer werkte prima als een embed, maar toen ik erop klikte om naar het volledige scherm te gaan, kwam ik terecht op een Google Documenten-pagina die zich verontschuldigde dat mijn rate-limiet was overschreden. Oeps. Misschien zou dit betrouwbaarder zijn als ik de module zou koppelen aan een betalende Google Apps-account, maar ik nam niet de moeite om erachter te komen, omdat ik vrij zeker wist dat mijn klant het display niet leuk zou vinden.
- DePDF.js optie werkte wonderwel … op Firefox en Chrome. Maar toen ik Internet Explorer startte, bleek het vak leeg. Blijkbaar is dit een probleem met
PDF.js
zelf, niet de PDF lezer module. Ik veronderstel dat ik dit had verwacht, gezien datPDF.js
is ontwikkeld door Mozilla en Internet Explorer is … zelf. Toch was ik teleurgesteld dat ik niet had gedacht dat te bevestigenPDF.js
werkte in de eerste plaats betrouwbaar in alle browsers. - Deembed optie was de meest betrouwbare. Hiermee werd Adobe Reader feitelijk in een vak op de webpagina uitgevoerd. Mijn Firefox heeft nog steeds de voorkeur om te worden uitgevoerd
PDF.js
, maar ik denk dat dit een browserinstelling was. Hoe dan ook, zolang een bezoeker Firefox of een PDF-viewer zoals Adobe Reader had, zou de PDF worden weergegeven.
Dus uiteindelijk was mijn oplossing om de PDF lezer met deinsluiten weergave optie. Met deze optie kan ik een PDF toevoegen aan een Drupal-knooppunt en deze betrouwbaar weergeven op een Drupal-webpagina.
Helaas is soms "betrouwbaar" niet genoeg. Na al dat zoeken, moest ik toch een service van derden overwegen.