Skip to main content

Så här väljer du en Drupal 7-modul för visning av PDF-filer

Gifs With Sound #228 (Maj 2025)

Gifs With Sound #228 (Maj 2025)
Anonim

Nyligen bad en klient mig om att lägga till en ny funktion på företagets Drupal-webbplats: visa PDF-filer i webbläsaren. När jag tittade på alternativen på drupal.org insåg jag att det här var en perfekt chans att dokumentera min faktiska beslutsprocess när jag valde en ny modul. Jag säger alltid att välja moduler klokt, men nu kan du se hur jag tycker att det här fungerar i verkligheten.

Definiera vad du vill ha

Det första steget är att definiera vad du vill ha. I mitt fall ville jag:

  • Möjligheten att visa PDF-filer i en webbläsare, liknande det här exemplet. Klienten skulle ladda upp PDF-filer av företagets nyhetsbrev, och besökare skulle kunna läsa dem enkelt.
  • Webbplatsen är Drupal 7, så modulen skulle behöva matcha den stora versionen. (Drupal 7 har varit ute för en stund nu, så om en modulutvecklare inte har kommit ut med en Drupal 7-version, kommer de nog inte att göra det.)
  • Trots att klienten inte angav detta, ville jag också undvika att förlita mig på en tjänst från tredje part. För videor är jag glad att lägga in innehållet på YouTube eller Vimeo och sedan inbädda det på en Drupal-webbplats, men för PDF-filer trodde jag inte att den möjliga extra exponeringen skulle överstiga den potentiella krångel, brott och kostnader. Jag var dock öppen för en tredje part om det var det enda alternativet.
  • Trots min önskan att undvika en tjänst från tredje part visste jag att mitt val skulle behöva en tredje part Javascript bibliotek . Även om detta skulle lägga till ett extra steg på framtida uppgraderingar, känner jag mig vanligtvis bättre med att köra min egen kopia av ett bibliotek i stället för att förlita mig på en tjänst från tredje part.
  • Jag ville hålla modulen så lätt och specifik som möjligt. Jag ville inte bli involverad i något radikalt nytt sätt att hantera eller organisera mediefiler. Jag ville ha något mer som Colorbox, vilket förstorar bilder för bättre visning, men är helt oberoende av hur du väljer att hantera bildfilerna. Jag trodde att det här biblioteket skulle vara pdf.js, men jag var öppen för andra möjligheter.
  • Som vanligt ville jag följa de allmänna riktlinjerna för att välja en Drupal-modul. I grund och botten väljer du en modul som redan har använts av ett fåtal tusen personer (om möjligt) för ett tag, med ett minimum av beroenden, som verkar bibehållas av en aktiv utvecklare som planerar att fortsätta att stödja projektet i framtiden och inte " t kräver licensavgift

Sök på Drupal.org

Med dessa mål i åtanke var nästa steg en enkel sökning på Drupal.org. Tiden att hoppa in i bollpottet av Modul Godhet.

"Jämförelse" Sida för PDF-moduler

Mitt första stopp var (eller borde ha varit), den här sidan: en jämförelse av PDF-visningsmoduler. Drupal.org har en utmärkt tradition för dokumentationssidor som beskriver fördelarna och nackdelarna med olika moduler i samma utrymme. Det finns en central lista över jämförelsessidor, men de sprinklas också över hela webbplatsen.

PDF-jämförelsessidan inkluderade fyra PDF-visningsmoduler. Jag täcker dem här, liksom ett par andra jag hittade från att söka. Jag börjar med kandidaterna som jag bestämde mig för att hoppa över.

Låt oss nu dyka in i specifika varför dessa moduler fungerade (eller mestadels inte) för detta projekt.

File Viewer

File Viewer använder Internet Archive BookReader, som fascinerade mig eftersom jag är en Internet Archive junkie. Varje gång jag åker dit, känner jag krångel av rädsla och överväldigar i bergen av böcker som jag kan plocka från etern.

Som sagt sa demonstrationsplatsen lite ful för mig. Jag kan leva med det, men jag tvivlade på att min klient skulle närpdf.js ser så mycket snygg ut.

Vid en andra titt på projektsidan såg jag också det stora djärva meddelandet högst upp:Denna modul har formellt flyttats till PDF-modulen. Rimligt nog. Med mindre än 400 installationer verkar det som ett bra drag att slå samman med den mer populära PDF-modulen (som vi täcker om ett ögonblick). Ladda aldrig en modul som har blivit fusionerad / flyttad / övergiven.

Google Viewer File Formatter

Google Viewer File Formatter är vad det låter som: ett sätt att använda Google Dokument för att bädda in visningar av filer på din webbsida. Trots att jag tyckte om mångsidigheten i Google Dokument, var ett av mina mål att förbli oberoende av någon tjänst från tredje part.

Även denna modul hade mindre än 100 installationer.

Ajax Document Viewer

Även om "AJAX" är en allmän Javascript term, visade sig Ajax Document Viewer förlita sig på en viss tredjepartstjänst. Endast cirka 100 installationer. Gå vidare…

Scald PDF

Endast Scald PDF hade 40 installationer, men jag var tvungen att ta en titt, eftersom det tydligen var en del av ett större projekt som kallades (ja) Scald. Som Scald-projektsidan förklarade: " Scald är ett innovativt sätt att hanteraMedia Atom i Drupal. "

Den meningen uppstod två stora röda flaggor: "innovativa tag" och ordet "Media" parat med "Atom". "Atom" var uppenbarligen ett repurposed ord för "sak", vilket gjorde det till en röd flagga i sig själv. Drupal har en förkärlek för dessa tomma boxar typ av ord: nod , entitet , funktion … Ju mer generellt ordet, desto mer svepande förändringarna kan vara.

När jag rullade ner blev mina misstankar bekräftade. Jag läste glada påståenden om hur Scald skulle återuppfinna hur jag hanterade Media på min webbplats.

Nu är sanningen att Drupals Mediahantering kan använda vissa uppfinningar. Scald är inte det enda ambitiösa projektet i detta utrymme.Men med mindre än 1000 installationer hittills ville jag inte komma in på bottenvåningen.

Visst, vid denna tid nästa år, kan Scald vara nästa Visningar. Det skulle rocka. Men det kan också vara övergiven, med ett (litet) spår av trasiga platser kvar att gråta.

För nu vill jag hålla mig med en mycket mindre ambitiös och farlig lösning. Visa bara PDF-filer, tack. Det var allt jag frågade.

Skugglåda

Shadowbox överraskade mig: det hävdade att det var en enda lösning för att visa alla typer av media, från PDF-filer till bilder till video. Detta var inte lika svepande som Scald, eftersom det bara skulle fokusera på visning media utan att introducera helt nya begrepp som "Media Atoms". Men jag gillar redan Colorbox, som jag nämnde. Jag ville inte behöva ompröva det beslutet.

Men jag noterade (med en inre stönhet) det med över16,000 installerar, kan Shadowbox vara ett kraftfullare alternativ i samma utrymme. jag hade att ta en titt.

Shadowbox Drupal-modulen är i grunden en bro till ett Javascript-bibliotek, Shadowbox.js, så jag kollade på bibliotekets hemsida. Där upptäckte jag två skäl att gå vidare:

  • Biblioteket kräver en licensavgift för kommersiell användning. Avgiften var tillräckligt skälig, men jag försöker undvika öppen källkod som inte är ledig.
  • En noggrann sökning av vanliga frågor avslöjade att PDF-filer, i motsats till beskrivningen på Drupal-modulen, är inte 100% stöds av Shadowbox-biblioteket. Hoppsan. Bra jag kollade.

De två contendersna: "PDF" och "PDF Reader"

Efter att ha tagit bort resten, kom jag nu till de två uppenbara contendersna: PDF och PDF Reader

Dessa två projekt hade viktiga likheter:

  • Båda hade nästan 3000 installationer, långt mer än alternativen (förutom Shadowbox).
  • Båda använde samma externa Javascript-bibliotek,pdf.js.

Vad sägs om skillnader?

PDF-läsare hade också möjlighet att integrera Google Dokument. I det här fallet trodde jag att min klient skulle vilja ha det, så jag gillade att ha alternativet.

Under tiden, PDF märktes somSöker co-maintainer (s). Det kan vara ett tecken på att utvecklaren snart skulle överge projektet, men å andra sidan var det senaste engagemanget för en vecka sedan, så minst var utvecklaren fortfarande aktiv.

Å andra sidan, PDF-läsare märktes somAktivt underhålls, men det senaste åtagandet var för ett år sedan.

Utan en klar vinnare bestämde jag mig för att testa dem båda.

Testa Contenders

Jag testade båda modulerna på en kopia av min levande webbplats. (Oavsett hur fast och oskyldig en modul visas, prova aldrig den först på en levande webbplats. Du kan bryta hela din webbplats.)

Jag var partisk mot PDF-läsare , eftersom det verkade ha fler alternativ (till exempel Google Dokument) än PDF . Så jag bestämde mig för att försöka PDF Först, för att få det ur vägen.

PDF-fel: Kompilering krävs?

Men när jag installerade PDF och läsREADME.txt, Upptäckte jag ett problem som jag hade sett men ignoreras på projektsidan. Av någon anledning verkar denna modul kräva att du sammanställerpdf.js manuellt. Även om projektsidan föreslog att detta inte nödvändigtvis var nödvändigt,README.txt föreslog det var.

Eftersom PDF-läsare skulle använda exakt samma bibliotek utan att kräva det här steget, bestämde jag mig för att prova först efter allt. Om det inte fungerade kunde jag alltid gå tillbaka till PDF och försök att manuellt kompilerapdf.js.

PDF-läsare: Framgång! Ungefär.

Så, äntligen, försökte jag PDF-läsare . Den här modulen ger en ny widget för att visa enFil fält. Du lägger till ett filfält i önskad innehållstyp och anger widgettypen tillPDF-läsare. Då skapar du en nod av den här typen och laddar upp din PDF. PDF-filen visas inbäddad i en "ruta" på sidan.

Du kan prova olika visningsalternativ genom att redigera innehållstypen igen och ändra skärmens inställningar för fältet.

Jag fann att varje visningsalternativ hade för och nackdelar:

  • DeGoogle Dokument läsaren fungerade bra som en inbäddning, men när jag klickade på den för att gå i fullskärm slutade jag på en Google Docs-sida som ursäktade att min gränsgräns hade överskridits. Hoppsan. Kanske skulle det vara mer tillförlitligt om jag hakade modulen till ett betalande Google Apps-konto, men jag brydde mig inte om att ta reda på det, eftersom jag var ganska säker på att min klient inte skulle vilja ha displayen.
  • Depdf.js alternativet fungerade fantastiskt … på Firefox och Chrome. Men när jag slog upp Internet Explorer såg rutan tom. Tydligen är detta ett problem medpdf.js själv, inte den PDF-läsare modul. Jag antar att jag borde ha förväntat detta med tanke på detpdf.js är utvecklad av Mozilla och Internet Explorer är … själv. Ändå blev jag besviken över att jag inte hade tänkt bekräfta detpdf.js arbetade på ett tillförlitligt sätt över alla webbläsare i första hand.
  • Debädda in alternativet var den mest tillförlitliga. Detta körde faktiskt Adobe Reader i en ruta på webbsidan. Min Firefox föredrog fortfarande att springapdf.js, men jag tror att det här var en webbläsarinställning. Hur som helst, så länge en besökare antingen hade Firefox eller en PDF-tittare som Adobe Reader, skulle PDF-filen visa.

Således var i slutändan min lösning att använda PDF-läsare medBädda in visningsalternativ. Med det här alternativet kan jag bifoga en PDF till en Drupal-nod och visa det på en Drupal-webbsida på ett tillförlitligt sätt.

Tyvärr är ibland "pålitlig" inte tillräckligt. Efter allt detta sökte jag trots allt att överväga en tjänst från tredje part.