Skip to main content

Sådan vælges et Drupal 7-modul til visning af PDF-filer

Derrick Lewis keeps things light in post-fight interview | INTERVIEW | UFC 229 (April 2025)

Derrick Lewis keeps things light in post-fight interview | INTERVIEW | UFC 229 (April 2025)
Anonim

For nylig bad en klient mig om at tilføje en ny funktion til virksomhedens Drupal-websted: Vis PDF-filer i browseren. Da jeg kiggede på mulighederne på drupal.org, indså jeg, at det var en perfekt chance for at dokumentere min faktiske beslutningsproces, da jeg valgte et nyt modul. Jeg siger altid at vælge moduler klogt, men nu kan du se, hvordan jeg synes det virker i virkeligheden.

Definer hvad du vil have

Det første skridt er at definere, hvad du vil have. I mit tilfælde ønskede jeg:

  • Evnen til at se PDF-filer i en webbrowser, ligner dette eksempel. Klienten ville uploade PDF-filer fra firmaets nyhedsbrev, og besøgende kunne nemt læse dem.
  • Webstedet er Drupal 7, så modulet skal matche den store version. (Drupal 7 har været ude i et stykke tid nu, så hvis en moduludvikler ikke er kommet ud med en Drupal 7-version endnu, vil de nok ikke.)
  • Selvom klienten ikke angav dette, ville jeg også undgå at stole på en tredjepartstjeneste. For videoer er jeg glad for at sende indholdet til YouTube eller Vimeo og derefter integrere det på et Drupal-websted, men for PDF-filer troede jeg ikke, at den mulige ekstra eksponering ville opveje det potentielle besvær, brud og omkostninger. Jeg var imidlertid åben for en tredjepartstjeneste, hvis det var den eneste mulighed.
  • På trods af mit ønske om at undgå en tredjepartstjeneste vidste jeg, at mit valg sandsynligvis ville kræve en tredjeparts Javascript bibliotek . Selv om dette ville tilføje et ekstra skridt på fremtidige opgraderinger, føler jeg mig generelt bedre om at køre min egen kopi af et bibliotek i stedet for at stole på en tredjepartstjeneste.
  • Jeg ønskede at holde modulet så let og specifikt som muligt. Jeg ønskede ikke at blive involveret i noget radikalt ny måde at håndtere eller organisere mediefiler på. Jeg ønskede noget mere som Colorbox, som forstørrer billeder for bedre visning, men forbliver fuldstændig uafhængig af, hvordan du vælger at styre billedfiler. Jeg havde en anelse om, at dette bibliotek ville være pdf.js, men jeg var åben for andre muligheder.
  • Som sædvanlig ønskede jeg at følge de generelle retningslinjer for valg af et Drupal-modul. Grundlæggende skal du vælge et modul, der allerede er blevet brugt af et par tusinde mennesker (hvis det er muligt) i et stykke tid med et minimum af afhængigheder, der tilsyneladende opretholdes af en aktiv udvikler, der planlægger at fortsætte med at støtte projektet i fremtiden og gør det ikke ' t kræver et licensgebyr.

Søg på Drupal.org

Med disse mål i tankerne var det næste trin en simpel søgning på Drupal.org. Tid til at hoppe ind i Ball Pit af Module Goodness.

"Sammenligning" Side for PDF-moduler

Mit første stop var (eller skulle have været), denne side: en sammenligning af PDF-viewer-moduler. Drupal.org har en fremragende tradition for dokumentationssider, som beskriver fordele og ulemper ved forskellige moduler i samme rum. Der er en central liste over sammenligningssider, men de er også sprinkled over hele siden.

PDF-sammenligningssiden omfattede fire PDF-viewer-moduler. Jeg dækker dem her, såvel som et par andre, jeg fandt ud af at søge. Jeg begynder med de kandidater, jeg besluttede at springe over.

Lad os nu dykke ind i detaljerne om, hvorfor disse moduler (eller for det meste ikke) har arbejdet for dette projekt.

File Viewer

File Viewer bruger Internet Archive BookReader, som fascinerede mig, fordi jeg er en internetarkiv-junkie. Hver gang jeg går der føler jeg kilder af frygt og overvælder på bjerge af bøger, jeg kan plukke fra æteren.

Når det er sagt, så demonstrationsstedet lidt lidt grimt for mig. Jeg kan leve med det, men jeg tvivlede på, at min klient ville, hvornårPDF.js ser så meget mere stilfuldt ud.

Også på et andet blik på projektsiden så jeg den store fedte annoncering øverst:Dette modul er formelt flyttet til PDF-modul. Fair nok. Med mindre end 400 installationer virker det som et godt træk at fusionere med det mere populære PDF-modul (som vi dækker om et øjeblik). Download aldrig et modul, der er blevet slået sammen / flyttet / forladt.

Google Viewer File Formatter

Google Viewer File Formatter er, hvad det lyder som: en måde at bruge Google Docs til at integrere visninger af filer på din webside. Selvom jeg kunne lide alsidigheden af ​​Google Dokumenter, var et af mine mål at forblive uafhængige af nogen tredjepartstjeneste.

Også dette modul havde mindre end 100 installationer.

Ajax Document Viewer

Selvom "AJAX" er et generelt Javascript-udtryk, viste Ajax Document Viewer sig på at være afhængig af en bestemt tredjepartstjeneste. Kun omkring 100 installationer. Komme videre…

Scald PDF

Kun Scald PDF havde 40 installationer, men jeg var nødt til at kigge, da det tydeligvis var en del af et større projekt kaldet (ja) Scald. Som Scald-projektsiden forklarede: " Scald er et innovativt tag på, hvordan man håndtererMedia Atoms i Drupal. "

Denne sætning rejste to store røde flag: "Innovative tage" og ordet "Media" parret med "Atom". "Atom" var tydeligvis et repurposed ord for "ting", som gjorde det til et rødt flag alt i sig selv. Drupal har en forkærlighed for disse tomme boks slags ord: node , enhed , funktion … Jo mere generelt ordet, jo mere fejende ændringer kan være.

Da jeg rullede ned, blev mine mistanker bekræftet. Jeg læser spændte påstande om, hvordan Scald grundlæggende ville genopfinde, hvordan jeg håndterede medier på mit websted.

Sandheden er nu, at Drupal's Mediehåndtering kan bruge nogle genopfindelser. Scald er ikke det eneste ambitiøse projekt i dette rum.Men med mindre end 1000 installationer hidtil har jeg ikke lyst til at komme ind i stueetagen.

Sikker på, at denne gang næste år kan Scald være de næste visninger. Det ville rocke. Men det kan også være abandonware, med et (lille) spor af brudte steder tilbage for at græde.

For nu ville jeg holde fast i en langt mindre ambitiøs og farlig løsning. Bare vis PDF-filer, tak. Det var alt, hvad jeg spurgte.

Shadowbox

Shadowbox overraskede mig: Det hævdede at være en enkelt løsning til at vise alle slags medier, fra PDF-filer til billeder til video. Det var ikke så fejende som Scald, da det kun ville fokusere på visning medier uden at indføre helt nye begreber som "Media Atoms". Men jeg ligner allerede Colorbox, som jeg nævnte. Jeg ønskede ikke at genoverveje denne beslutning.

Jeg bemærkede dog (med et indre støn) det med over16,000 installationer, kan Shadowbox være et mere kraftfuldt alternativ i samme rum. jeg havde at tage et kig.

Shadowbox Drupal-modulet er stort set en bro til et Javascript-bibliotek, Shadowbox.js, så jeg tjekkte bibliotekets hjemmeside. Der opdagede jeg to grunde til at gå videre:

  • Biblioteket kræver et licensgebyr til kommerciel brug. Gebyret var rimeligt nok, men jeg forsøger at undgå open source software, der ikke er gratis.
  • En omhyggelig søgning i FAQ viste, at PDF-filer i modsætning til beskrivelsen på Drupal-modulsiden er ikke 100% understøttet af Shadowbox-biblioteket. Ups. God ting jeg kontrollerede.

De to contenders: "PDF" og "PDF Reader"

Efter at have fjernet resten, kom jeg nu til de to indlysende konkurrenter: PDF og PDF Reader

Disse to projekter havde nøgle ligheder:

  • Begge havde næsten 3.000 installationer, langt mere end alternativerne (undtagen Shadowbox).
  • Begge brugte det samme eksterne Javascript-bibliotek,PDF.js.

Hvad med forskelle?

PDF Reader havde også mulighed for integration af Google Dokumenter. I dette særlige tilfælde troede jeg, at min klient kunne lide det, så jeg kunne godt lide at have muligheden.

I mellemtiden, PDF blev markeret somSøger co-maintainer (s). Det kunne være et tegn på, at udvikleren snart ville opgive projektet, men på den anden side var den seneste forlovelse for en uge siden, så i det mindste var udvikleren stadig aktiv.

På den anden side, PDF Reader blev markeret somAktivt vedligeholdt, men det seneste forbud var for et år siden.

Uden en klar vinder besluttede jeg at teste dem begge.

Testing Contenders

Jeg testede begge moduler på en kopi af mit live site. (Ligegyldigt hvor solid og uskadelig et modul vises, prøv det aldrig først på et live site. Du kan bryde hele dit websted.)

Jeg var forspændt mod PDF Reader , fordi det syntes at have flere muligheder (f.eks. Google Docs) end PDF . Så jeg besluttede at prøve PDF først for at få det ud af vejen.

PDF-fejl: Kompilering kræves?

Men da jeg installerede PDF og læsREADME.txtJeg opdagede et problem, som jeg havde set men ignoreret på projektsiden. Af en eller anden grund synes dette modul at kræve, at du kompilererPDF.js manuelt. Selvom projektsiden foreslog, at dette ikke nødvendigvis var nødvendigt,README.txt foreslog det var.

Siden PDF Reader ville bruge det nøjagtige samme bibliotek uden at kræve dette trin, besluttede jeg at prøve det først efter alt. Hvis det ikke fungerede, kunne jeg altid gå tilbage til PDF og prøv at manuelt kompilerePDF.js.

PDF Reader: Succes! Sort af.

Så i sidste ende forsøgte jeg PDF Reader . Dette modul giver en ny widget til visning af aFil Mark. Du tilføjer et filfelt til din ønskede indholdstype og indstiller widget typen tilPDF Reader. Derefter opretter du en node af denne type og uploader din PDF. PDF'en vises indlejret i en "boks" på siden.

Du kan prøve forskellige visningsindstillinger ved at redigere indholdstypen igen og ændre skærmindstillingerne for feltet.

Jeg fandt ud af, at hver visningsindstilling havde fordele og ulemper:

  • DetGoogle Dokumenter læseren fungerede fint som en indlejring, men da jeg klikede på det for at gå i fuldskærm, afviklede jeg på en Google Docs-side, som undskyldte, at min takstgrænse var overskredet. Ups. Måske ville det være mere pålideligt, hvis jeg hakede modulet til en betalende Google Apps-konto, men jeg gider ikke at finde ud af, da jeg var temmelig sikker på, at min klient ikke kunne lide displayet.
  • DetPDF.js mulighed fungerede vidunderligt … på Firefox og Chrome. Men da jeg fyrede Internet Explorer, syntes kassen tom. Det er tilsyneladende et problem medPDF.js sig selv, ikke den PDF Reader modul. Jeg formoder, at jeg skulle have forventet det, da detPDF.js er udviklet af Mozilla og Internet Explorer er … selv. Alligevel var jeg skuffet over, at jeg ikke havde tænkt mig at bekræfte detPDF.js arbejdede pålideligt på tværs af alle browsere i første omgang.
  • Detindlejre mulighed var den mest pålidelige. Dette kørte faktisk Adobe Reader i en boks på websiden. Min Firefox foretrak stadig at kørePDF.js, men jeg tror, ​​det var en browserindstilling. Uanset hvad, så længe en besøgende enten havde Firefox eller en PDF-viewer som Adobe Reader, ville PDF'en vise.

Så i sidste ende var min løsning at bruge PDF Reader medIndlejre visningsindstilling. Denne mulighed giver mig mulighed for at vedhæfte en PDF til en Drupal-node og på en betryggende måde vise den på en Drupal-webside.

Desværre er nogle gange "pålidelige" ikke nok. Efter alt dette søgte, måtte jeg overveje en tredjeparts service.