Skip to main content

Hvordan velge en Drupal 7 modul for visning av PDF-filer

On the Run from the CIA: The Experiences of a Central Intelligence Agency Case Officer (April 2025)

On the Run from the CIA: The Experiences of a Central Intelligence Agency Case Officer (April 2025)
Anonim

Nylig ba en klient meg om å legge til en ny funksjon på selskapets Drupal-side: vise PDF-filer i nettleseren. Når jeg så på alternativene på drupal.org, innså jeg at dette var en perfekt sjanse til å dokumentere min faktiske beslutningsprosess som jeg valgte en ny modul. Jeg sier alltid å velge moduler klokt, men nå kan du se hvordan jeg tror dette fungerer i virkeligheten.

Definer hva du vil

Det første trinnet er å definere hva du vil. I mitt tilfelle ønsket jeg:

  • Muligheten til å vise PDF-filer i en nettleser, som ligner dette eksemplet. Klienten vil laste opp PDF-filer av selskapets nyhetsbrev, og besøkende vil kunne lese dem enkelt.
  • Siden er Drupal 7, så modulen må samsvare med den store versjonen. (Drupal 7 har vært ute for en stund nå, så hvis en modulutvikler ikke har kommet ut med en Drupal 7-versjon, vil de nok ikke.)
  • Selv om klienten ikke angav dette, ønsket jeg også å unngå å stole på en tredjepartstjeneste. For videoer er jeg glad for å legge inn innholdet til YouTube eller Vimeo, og deretter legge det inn på et Drupal-nettsted, men for PDF-filer trodde jeg ikke at den mulige ekstra eksponeringen ville oppveie potensielle problemer, brudd og kostnader. Jeg var imidlertid åpen for en tredjepartstjeneste hvis det var det eneste alternativet.
  • Til tross for mitt ønske om å unngå en tredjepartstjeneste, visste jeg at valget mitt trolig ville kreve en tredjeparts Javascript bibliotek . Selv om dette vil legge til et ekstra skritt på fremtidige oppgraderinger, føler jeg meg generelt bedre om å kjøre min egen kopi av et bibliotek i stedet for å stole på en tredjepartstjeneste.
  • Jeg ønsket å holde modulen så lett og spesifikk som mulig. Jeg ønsket ikke å bli involvert med noen radikalt ny måte å håndtere eller organisere mediefiler på. Jeg ville ha noe mer som Colorbox, som forstørrer bilder for bedre visning, men forblir helt uavhengig av hvordan du velger å administrere bildefiler. Jeg trodde at dette biblioteket ville være pdf.js, men jeg var åpen for andre muligheter.
  • Som vanlig ønsket jeg å følge de generelle retningslinjene for å velge en Drupal-modul. I utgangspunktet velger du en modul som allerede er blitt brukt av noen få tusen mennesker (hvis mulig) for en stund, med et minimum av avhengigheter, som ser ut til å opprettholdes av en aktiv utvikler som planlegger å fortsette å støtte prosjektet inn i fremtiden, t krever lisensavgift.

Søk på Drupal.org

Med disse målene i tankene var det neste trinnet et enkelt søk på Drupal.org. Tid til å hoppe inn i Ball Pit of Module Goodness.

"Sammenligning" Side for PDF-moduler

Mitt første stopp var (eller burde vært), denne siden: en sammenligning av PDF-visningsmoduler. Drupal.org har en utmerket tradisjon for dokumentasjonssider som skisserer fordeler og ulemper ved ulike moduler i samme rom. Det er en sentral liste over sammenligningssider, men de er også sprinkled over hele nettstedet.

PDF-sammenligningssiden inneholder fire PDF-visningsmoduler. Jeg vil dekke dem her, så vel som et par andre jeg fant fra å søke. Jeg starter med kandidatene jeg bestemte meg for å hoppe over.

La oss nå dykke inn i spesifikkene til hvorfor disse modulene gjorde (eller for det meste ikke) jobbet for dette prosjektet.

File Viewer

File Viewer bruker Internet Archive BookReader, som fascinerte meg fordi jeg er en Internet Archive-junkie. Hver gang jeg går dit, føler jeg kile av frykt og overvelder på fjellene i bøker jeg kan plukke fra eter.

Når det er sagt, så så demonstrasjonsstedet litt styggt for meg. Jeg kan leve med det, men jeg tvilte på at klienten min ville, nårpdf.js ser så mye mer stilig ut.

Også på et andre blikk på prosjektsiden så jeg den store dristige kunngjøringen øverst:Denne modulen er formelt flyttet til PDF-modulen. Greit nok. Med mindre enn 400 installasjoner virker det som et godt trekk å slå sammen med den mer populære PDF-modulen (som vi dekker i et øyeblikk). Last ned aldri en modul som har blitt slått sammen / flyttet / forlatt.

Google Viewer File Formatter

Google Viewer File Formatter er hvordan det høres ut: en måte å bruke Google Dokumenter til å legge inn visning av filer på websiden din. Selv om jeg likte allsidigheten til Google Dokumenter, var et av mine mål å forbli uavhengig av noen tredjepartstjeneste.

Også denne modulen hadde mindre enn 100 installasjoner.

Ajax Document Viewer

Selv om "AJAX" er en generell Javascriptperiode, viste Ajax Document Viewer seg for å stole på en bestemt tredjepartstjeneste. Bare ca 100 installasjoner. Går videre…

Skal PDF

Bare Scald PDF hadde 40 installasjoner, men jeg måtte ta en titt, siden det var tydeligvis en del av et større prosjekt kalt (ja) Scald. Som Scald-prosjektsiden forklarte: " Scald er en innovativ ta på seg hvordan man skal håndtereMedia Atoms i Drupal. "

Denne setningen reiste to store røde flagg: "innovative take" og ordet "Media" parret med "Atom". "Atom" var åpenbart et repurposed ord for "ting", som gjorde det til et rødt flagg i seg selv. Drupal har en forkjærlighet for disse tomme boksene slags ord: node , enhet , trekk … Jo mer generelle ordet, jo mer feiende endringene kan være.

Da jeg rullet ned, ble mine mistenkelser bekreftet. Jeg leser glade påstander om hvordan Scald i utgangspunktet ville gjenoppfinne hvordan jeg håndterte Media på nettstedet mitt.

Nå er sannheten at Drupals mediahåndtering kan bruke noen gjenoppfinnelser. Scald er ikke det eneste ambisiøse prosjektet i dette rommet.Men med mindre enn 1000 installasjoner så langt, ville jeg ikke komme inn i første etasje.

Jo, på denne tiden neste år, kan Scald være de neste visningene. Det ville rocke. Men det kan også være abandonware, med en (liten) sti av ødelagte steder igjen for å gråte.

For nå ønsket jeg å holde fast med en mye mindre ambisiøs og farlig løsning. Bare vis PDF-filer, vær så snill. Det var alt jeg spurte.

Shadowbox

Shadowbox overrasket meg: Det hevdet å være en enkelt løsning for å vise alle slags medier, fra PDF-filer til bilder til video. Dette var ikke så feiende som Scald, siden det bare ville fokusere på visning medier uten å introdusere helt nye konsepter som "Media Atoms". Men jeg liker allerede Colorbox, som jeg nevnte. Jeg ønsket ikke å revurdere den beslutningen.

Imidlertid bemerket jeg (med en indre stønn) det med over16,000 installerer, kan Shadowbox være et kraftigere alternativ i samme rom. Jeg hadde å ta en titt.

Shadowbox Drupal-modulen er i utgangspunktet en bro til et Javascript-bibliotek, Shadowbox.js, så jeg sjekket ut på bibliotekets nettside. Der oppdaget jeg to grunner til å gå videre:

  • Biblioteket krever lisensavgift for kommersiell bruk. Avgiften var rimelig nok, men jeg prøver å unngå åpen programvare som ikke er ledig.
  • Et forsiktig søk på vanlige spørsmål viste at i motsetning til beskrivelsen på Drupal-modulsiden, er PDF-filer ikke 100% støttet av Shadowbox-biblioteket. Oops. God ting jeg sjekket.

The Two Contenders: "PDF" og "PDF Reader"

Etter å ha eliminert resten, kom jeg nå til de to åpenbare konkurrentene: PDF og PDF Reader

Disse to prosjektene hadde viktige likheter:

  • Begge hadde nesten 3000 installasjoner, langt mer enn alternativene (unntatt Shadowbox).
  • Begge brukte det samme eksterne Javascript-biblioteket,pdf.js.

Hva med forskjeller?

PDF-leser hadde også muligheten for integrasjon av Google Dokumenter. I dette tilfellet trodde jeg at klienten min kunne like det, så jeg likte å ha muligheten.

I mellomtiden, PDF ble merket somSøker medforfatter (e). Det kan være et tegn på at utvikleren snart ville forlate prosjektet, men på den annen side var den siste forpliktelsen for en uke siden, så i det minste var utvikleren fortsatt aktiv.

På den andre siden, PDF-leser ble merket somAktivt vedlikeholdt, men den siste forpliktelsen var for et år siden.

Uten en klar vinner bestemte jeg meg for å teste dem begge.

Testing Contenders

Jeg testet begge modulene på en kopi av mitt nettsted. (Uansett hvor solid og uskyldig en modul dukker opp, prøv aldri den først på et live-nettsted. Du kan ødelegge hele nettstedet ditt.)

Jeg var partisk mot PDF-leser , fordi det syntes å ha flere alternativer (for eksempel Google Dokumenter) enn PDF . Så jeg bestemte meg for å prøve PDF først, for å få det ut av veien.

PDF mislykkes: kompilering kreves?

Men da jeg installerte PDF og lesREADME.txt, Oppdaget jeg et problem som jeg hadde sett, men ignorert på prosjektsiden. Av en eller annen grunn virker denne modulen å kreve at du kompilererpdf.js manuelt. Selv om prosjektsiden foreslo at dette ikke nødvendigvis var nødvendig,README.txt foreslo det var.

Siden PDF-leser ville bruke nøyaktig samme bibliotek uten å kreve dette trinnet, bestemte jeg meg for å prøve det først etter alt. Hvis det ikke fungerte, kunne jeg alltid gå tilbake til PDF og prøv å manuelt kompilerepdf.js.

PDF Reader: Suksess! På en måte.

Så, til slutt, prøvde jeg PDF-leser . Denne modulen gir en ny widget for å vise enFil felt. Du legger til et filfelt i ønsket innholdstype og angir widget type tilPDF-leser. Deretter oppretter du en node av denne typen og laster opp PDF-filen. PDF-filen vises innebygd i en "boks" på siden.

Du kan prøve forskjellige visningsalternativer ved å redigere innholdstypen igjen og endre visningsinnstillingene for feltet.

Jeg fant ut at hver skjermalternativ hadde fordeler og ulemper:

  • Degoogle Dokumenter leseren fungerte bra som en innebygd, men da jeg klikket på den for å gå på fullskjerm, slo jeg opp på en Google Docs-side som beklager at min grenseverdi var overskredet. Oops. Kanskje dette ville være mer pålitelig hvis jeg hekta modulen til en betalende Google Apps-konto, men jeg brydde meg ikke om å finne ut, da jeg var ganske sikker på at klienten min ikke ville like displayet.
  • Depdf.js alternativet fungerte fantastisk … på Firefox og Chrome. Men da jeg sparket opp Internet Explorer, ble boksen tom. Tilsynelatende er dette et problem medpdf.js selv, ikke den PDF-leser modul. Jeg antar at jeg burde ha forventet dette, gitt detpdf.js er utviklet av Mozilla og Internet Explorer er … selv. Likevel var jeg skuffet over at jeg ikke hadde tenkt å bekrefte detpdf.js jobbet pålidelig over alle nettlesere i utgangspunktet.
  • Deembed alternativet var den mest pålitelige. Dette kjørte faktisk Adobe Reader i en boks på nettsiden. Min Firefox foretrekker fortsatt å kjørepdf.js, men jeg tror dette var en nettleserinnstilling. Uansett, så lenge en besøkende hadde enten Firefox eller en PDF-leser som Adobe Reader, ville PDF-filen vise.

Så til slutt var løsningen min å bruke PDF-leser medembed visningsalternativ. Dette alternativet tillater meg å legge ved en PDF til en Drupal-node, og på en pålitelig måte vise den på en Drupal-nettside.

Dessverre er det noen ganger ikke "pålitelig" nok. Etter alt dette søket måtte jeg overveie en tredjepartstjeneste.