V zadnjem času mi je naročnik prosil, da dodam novo funkcijo na družabno spletno mesto Drupal: v brskalniku prikažem datoteke PDF. Ko sem brskal o možnostih drupal.org, sem ugotovil, da je to odlična priložnost za dokumentiranje mojega dejanskega postopka odločanja, saj sem izbral nov modul. Vedno govorim, da modro izbere modele, zdaj pa lahko vidite, kako mislim, da to deluje v resničnem življenju.
Določite, kaj želite
Prvi korak je določiti, kaj hočeš. V mojem primeru sem hotel:
- Možnost ogleda datotek PDF v spletnem brskalniku, podobnem temu primeru. Stranka bi naložila PDF-je v bilten podjetja, obiskovalce pa bi jih lahko zlahka prebrali.
- Spletna stran je Drupal 7, zato bi moral modul ustrezati tej glavni različici. (Družba Drupal 7 že nekaj časa že obstaja, zato če razvijalec modulov še ni prišel z različico Drupal 7, verjetno ne bo.)
- Čeprav stranka tega ni določila, sem se želela tudi izogibati uporabi storitve tretjih oseb. Za video posnetke z veseljem objavljam vsebino na YouTube ali Vimeo in jo nato vdelate na spletno mesto Drupal, vendar za PDF-je, nisem mislil, da bi morebitna dodatna izpostavljenost odtehtala možne težave, zlom in stroške. Vendar sem bil odprt za tretje osebe, če bi bila edina možnost.
- Kljub želji, da bi se izognili tretji stranki, sem vedel, da bi moja izbira verjetno zahtevala Javascript tretje osebe knjižnica . Čeprav bi to dodalo dodaten korak k prihodnjim nadgradnjam, se mi na splošno počutim bolje, če vodim lastno kopijo knjižnice, namesto da se zanašam na storitev tretje osebe.
- Želel sem ohraniti modul lahke in specifične, kot je mogoče. Nočem se vključiti v radikalno nov način ravnanja ali organiziranja medijskih datotek. Želel sem nekaj podobnega Colorboxu, ki povečuje slike za boljši pregled, vendar ostaja popolnoma neodvisen od tega, kako se odločate za upravljanje slikovnih datotek. Sem imel kurbo, da bi bila ta knjižnica pdf.js, vendar sem bil odprt za druge možnosti.
- Kot običajno sem želel slediti splošnim smernicam za izbiro Drupal modula. V bistvu izberi modul, ki ga že nekaj časa uporablja več tisoč ljudi (če je mogoče), z minimalnimi odvisnostmi, ki jih vzdržuje aktivni razvijalec, ki načrtuje, da bo projekt nadaljeval v prihodnosti, ne zahtevajo licenčnine.
Poiščite Drupal.org
S temi cilji je bil naslednji korak preprosto iskanje na Drupal.org. Čas, da skočite v kroglo modularne dobrote.
Primerjava stran za module PDF
Moja prva postaja je bila (ali bi morala biti) ta stran: Primerjava modulov pregledovalnika PDF. Drupal.org ima odlično tradicijo dokumentiranja strani, ki opisujejo prednosti in slabosti različnih modulov v istem prostoru. Obstaja osrednji seznam primerjalnih strani, vendar jih tudi poškropi po celotni strani.
Na strani za primerjavo PDF so bili vključeni štirje moduli za pregledovanje PDF-jev. Tu jih bom pokril, pa tudi nekaj drugih, ki sem jih našel pri iskanju. Začel bom s kandidati, ki sem se odločil preskočiti.
Zdaj pa preučimo, zakaj so ti moduli delali (ali večinoma niso) za ta projekt.
Pregledovalnik datotek
File Viewer uporablja Internet Archive BookReader, ki me je zanimalo, ker sem narkomanka za internetno arhiviranje. Vsakič, ko grem tja, se čutim golobov strahu in se zaletim v gore knjig, ki jih lahko odtrgam od etra.
To je reklo, da je predstavitveno spletno mesto za mene nekoliko grdo. Lahko bi živel z njim, vendar sem dvomil, da bi moja stranka, kdajpdf.js
izgleda precej bolj eleganten.
Tudi na drugem pogledu na strani projekta sem videl veliko krepko sporočilo na vrhu:Ta modul je bil uradno premeščen v modul PDF. Dovolj pošteno. Z manj kot 400 namestitvami se zdi, da se združi z bolj priljubljenim modulom PDF (ki ga bomo pokrili v trenutku). Nikoli ne prenesite modula, ki je bil združen / premaknjen / opuščen.
Google Former File Formatter
Google Former File Formatter je tisto, kar se sliši: način uporabe Google Dokumentov za vdelavo prikazov datotek na vaši spletni strani. Čeprav mi je bila všeč vsestranskost Google Dokumentov, je bil eden od mojih ciljev ostati neodvisen od katere koli tretje stranke.
Tudi ta modul je imel manj kot 100 namestitev.
Pregledovalnik dokumentov Ajax
Čeprav je »AJAX« splošen izraz za Javascript, se je Ajax Document Viewer izkazal kot odvisen od določene storitve tretjih oseb. Samo okoli 100 namestitev. Iti naprej…
Scald PDF
Scald PDF je imel samo 40 namestitev, vendar sem moral pogledati, saj je bil očitno del večjega projekta, imenovanega (da) Scald. Kot je razložila projektna stran Scald: " Scald je inovativen, kako ravnatiAtomi medijev v Drupalu. "
Ta stavek je postavil dve veliki rdeči zastavici: "inovativni vzeti" in besedo "Mediji" v paru "Atom". "Atom" je bila očitno reagirana beseda za "stvar", zaradi katere je bila rdeča zastava samo po sebi. Družba Drupal ima nagnjenje za te prazne vrste besed: vozlišče , entiteta , funkcija … bolj splošna beseda, bolj lahko se spremenijo spremembe.
Ko sem se pomikala navzdol, so bili sumničarji potrjeni. Prebral sem navdušene trditve o tem, kako bi Scald v osnovi znova odkril, kako sem na spletnem mestu obravnaval medije.
Resnica je, da bi Drupalovo ravnanje z mediji lahko uporabilo znova. Scald ni edini ambiciozen projekt v tem prostoru.Vendar pa z manj kot 1000 namestitvami doslej nisem hotel priti v pritličje.
Seveda, v tem času prihodnje leto bo Scald morda naslednji pogled. To bi stalo. Toda morda je tudi opustitev programske opreme, pri čemer je (majhna) sled prelomnih mest prepuščena.
Za zdaj sem se želel držati manj ambiciozne in nevarne rešitve. Prosim, samo prikazujte PDF-je. To je vse, kar sem spraševal.
Shadowbox
Shadowbox me je presenetil: trdil je, da je enotna rešitev za prikaz vseh vrst medijev, od PDF-jev do slik v video. To ni bilo čisto kot Scald, saj bi se osredotočila le na to prikazovanje medijev brez uvedbe celih novih konceptov, kot so "Media Atoms". Ampak jaz že všeč Colorbox, kot sem omenil. Nisem si hotel ponovno premisliti o tej odločitvi.
Vendar sem opazil (z notranjim stokom), da je z več16,000 namestitve, Shadowbox bi lahko bila močnejša alternativa v istem prostoru. jaz imela da si ogledate.
Modul Shadowbox Drupal je v bistvu most v knjižnico Javascript, Shadowbox.js, zato sem preveril spletno stran knjižnice. Tam sem odkril dva razloga za nadaljevanje:
- Knjižnica zahteva licenčnino za komercialno uporabo. Pristojbina je bila dovolj razumna, vendar se trudim izogibati odprtokodni programski opremi, ki ni brezplačna.
- Skrbno iskanje pogosto zastavljenih vprašanj je pokazalo, da so v nasprotju z opisom na strani modula Drupal PDF-ji ne 100% podpira knjižnica Shadowbox. Ups. Dobro sem preveril.
Dva kandidata: "PDF" in "PDF Reader"
Po tem, ko sem odpravil preostanek, sem prišel do dveh očitnih kandidatov: PDF in PDF Reader
Ti dve projekti sta imeli ključne podobnosti:
- Oba sta imela skoraj 3.000 namestitev, veliko več kot alternativ (razen Shadowbox).
- Obe sta uporabljali isto zunanjo knjižnico Javascripta,
pdf.js
.
Kaj pa razlike?
PDF Reader imela tudi možnost za integracijo Google Dokumentov. V tem konkretnem primeru sem mislil, da bi moji odjemalci to želeli, zato mi je všeč, da imam možnost.
Medtem, PDF je bil označen kotPoiščite vzdrževalca (-e)
. To bi lahko bil znak, da bo razvijalec kmalu opustil projekt, na drugi strani pa najnovejša obveza pred tednom dni, zato je vsaj razvijalec še vedno aktiven.
Po drugi strani, PDF Reader je bil označen kotAktivno vzdrževanje
, vendar je bila najnovejša obveza pred letom dni.
Brez jasnega zmagovalca sem se odločil, da jih bom preizkusil.
Preizkušanje kandidatov
Testiral sem oba modula na kopiji mojega živega spletnega mesta. (Ne glede na to, kako trdna in neškodljiva se pojavlja modul, nikoli ne poskusite najprej na spletnem mestu v živo. Lahko bi prekinili celotno spletno stran.)
Bil sem pristranski proti PDF Reader , ker se je zdelo, da ima več možnosti (na primer Google Dokumenti) kot PDF . Zato sem se odločil poskusiti PDF najprej, da ga odstranimo s poti.
PDF Fail: Compilation Required?
Vendar, ko sem namestil PDF in prebratiREADME.txt
, Sem odkril težavo, ki sem jo videl, a sem prezrta na strani projekta. Zdi se, da ta modul iz nekega razloga zahteva, da ga sestavitepdf.js
ročno. Čeprav je projektna stran predlagala, da to ni nujno potrebno,README.txt
predlagal, da je bilo.
Od PDF Reader bi uporabil popolnoma isto knjižnico, ne da bi zahteval ta korak, sem se najprej odločil, da poskusim. Če ne bi delovala, bi se lahko vedno vrnil PDF in poskusite ročno zbiratipdf.js
.
PDF Bralec: Uspeh! Nekako.
Torej, končno sem poskušal PDF Reader . Ta modul ponuja nov pripomoček za prikazovanjemapa
polje. V želeno vrsto vsebine dodate polje s datotekami in nastavite vrsto pripomočkaPDF Reader
. Nato ustvarite to vrsto vozlišča in naložite svoj PDF. PDF je vdelan v "polje" na strani.
Različne možnosti prikaza lahko poskusite znova, tako da znova uredite vrsto vsebine in spremenite nastavitve zaslona za to polje.
Ugotovil sem, da ima vsaka možnost prikaza prednosti in slabosti:
- TheGoogle Dokumenti bralec je dobro delal kot vdelavo, a ko sem ga kliknil, da bi šel v celozaslonski način, sem začel na strani Google Dokumentov, ki se je opravičila, da je bila moja zgornja meja presežena. Ups. Morda bi bilo to bolj zanesljivo, če bi zasnoval modul za plačilni račun za Google Apps, vendar nisem se motil, da bi ugotovil, ker sem bil prepričan, da moji odjemalci ne želijo prikaza.
- Thepdf.js možnost je čudovito delovala … v Firefoxu in Chrome-u. Toda, ko sem odprl Internet Explorer, je bilo polje prazno. Očitno je to problem
pdf.js
sam, ne PDF Reader modul. Predvidevam, da bi to moral pričakovati glede na topdf.js
je razvila Mozilla in Internet Explorer je … sam. Kljub temu sem bil razočaran, da nisem mislil, da to potrdimpdf.js
zanesljivo so delovali v vseh brskalnikih. - Thevdelati možnost je bila najbolj zanesljiva. To je dejansko vodilo Adobe Reader v polje na spletni strani. Moj Firefox je še vedno raje zagnal
pdf.js
, vendar mislim, da je to nastavitev brskalnika. Kakorkoli, dokler je obiskovalec imel Firefox ali pregledovalnik PDF, kot je Adobe Reader, bi se PDF prikazal.
Na koncu je bila moja rešitev uporaba PDF Reader zVdelati možnost prikaza. Ta možnost mi bo omogočila, da priložite PDF v vozlišče Drupal in ga zanesljivo prikažete na Drupalovi spletni strani.
Na žalost včasih "zanesljiv" ni dovolj. Po vsem tem iskanju sem moral navsezadnje upoštevati tretjo stranko.