如何選擇用於查看PDF的Drupal 7模塊

模塊選擇藝術的個案研究

最近,一位客戶要求我為公司的Drupal站點添加一項新功能:在瀏覽器中顯示PDF文件。 當我瀏覽drupal.org上的選項時,我意識到這是一個完美的機會來記錄我選擇新模塊時的實際決策過程。 我一直在說明智地選擇模塊 ,但現在你可以看到我認為這在現實生活中的作用。

定義你想要的

第一步是定義你想要的。 就我而言,我想要:

在Drupal.org上搜索

考慮到這些目標,下一步就是在Drupal.org上簡單搜索。 有時間跳進Module Goodness的球場。

"比較" PDF模塊的頁面

我的第一站是(或應該是),這個頁面:PDF查看器模塊的比較。 Drupal.org擁有優秀的文檔頁面傳統,概述了同一空間中各種模塊的優缺點。 有一個比較頁面的中心列表,但他們也灑在整個網站。

PDF比較頁麵包含四個PDF查看器模塊。 我會在這裡介紹他們以及我從搜索中找到的其他人。 我將從我決定跳過的候選人開始。

現在讓我們深入探討這些模塊為什麼(或者大部分沒有)為這個項目工作的具體細節。

文件查看器

File Viewer使用Internet Archive BookReader,這讓我很感興趣,因為我是Internet檔案迷。 每次我去那裡,我都會感到恐懼的癢癢,並在我能從以太汲取的書籍山上壓倒。

話雖如此,示範網站對我來說有點難看。 我可能會忍受它,但是當我的客戶看起來更加時尚時,我懷疑客戶會這麼做。

另外,在第二次看項目頁面時,我看到了頂部的大膽公告: 此模塊已正式移至PDF模塊 。 很公平。 安裝少於400個,與更流行的PDF模塊(我們稍後會介紹)合併,似乎是一個很好的舉措。 切勿下載已合併/移動/放棄的模塊。

Google Viewer文件格式器

谷歌瀏覽器文件格式化器聽起來像這樣:一種使用Google文檔在網頁中嵌入文件顯示的方式。 儘管我喜歡Google Docs的多功能性,但我的目標之一是保持獨立於任何第三方服務。

此外,這個模塊安裝不到100次。

Ajax文檔查看器

儘管“AJAX”是一個通用的Javascript術語,但Ajax Document Viewer卻依賴於特定的第三方服務。 只有大約100次安裝。 繼續...

燙傷PDF

Scald PDF只有40次安裝,但我不得不看一看,因為它顯然是一個名為(是)燙傷的大型項目的一部分。 正如Scald項目頁面所解釋的那樣:“ Scald是如何在Drupal中處理媒體原子的一種創新。”

這句話引出了兩個巨大的紅旗:“創新採取”和“媒體”一詞與“原子”配對。 “原子”顯然是“事物”的一個重用詞,它本身就使它成為一面紅旗。 Drupal對這些空洞的單詞有興趣: 節點實體特徵 ......這個詞越普遍,這些變化就越清晰。

當我向下滾動時,我的懷疑得到了證實。 我讀到Scald如何基本改造我在我的網站上處理媒體的興奮聲明。

現在,事實是Drupal的媒體處理可能會使用一些重新創建。 燙傷不是這個領域唯一雄心勃勃的項目。 但是,到目前為止,安裝量還不到1000台,我不想進入底層。

當然,到明年的這個時候,Scald可能會成為下一個觀點 。 那會搖擺。 但它也可能是放棄的,有一小撮破碎的網站留下來哭泣。

現在,我想堅持一個不那麼雄心勃勃和危險的解決方案。 請只顯示PDF。 這就是我所問的。

暗箱

Shadowbox讓我感到驚訝:它聲稱是顯示各種媒體的單一解決方案,從PDF到圖像到視頻。 這並不像Scald那樣廣泛,因為它只會專注於展示媒體,而不會引入像“媒體原子”這樣的全新概念。 但正如我所說,我已經喜歡Colorbox了。 我不想重新考慮這個決定。

然而,我注意到(有內心的呻吟),在超過16,000次安裝中,Shadowbox可能是同一空間中更強大的替代品。 我不得不看看。

Shadowbox Drupal模塊基本上是一個Javascript庫的橋樑,Shadowbox.js,所以我查看了圖書館的網站。 在那裡,我發現了兩個繼續前進的理由:

兩位競爭者:" PDF" 和“PDF閱讀器”"

除了剩下的部分,我現在來到了兩個明顯的競爭者:PDF和PDF閱讀器

這兩個項目有著重要的相似之處:

差異呢?

PDF Reader也可以選擇Google Docs集成。 在這種特殊情況下,我認為我的客戶可能會喜歡這樣,所以我喜歡有這個選擇。

同時, PDF被標記為尋求共同維護者(s)。 這可能表明開發人員很快就會放棄該項目,但另一方面,最近一次提交是在一周前完成的,所以至少開發人員仍然活躍。

另一方面, PDF閱讀器被標記為主動維護,但最近的提交是一年前。

沒有一個明確的贏家,我決定對它們進行測試。

測試競爭者

我在我的現場網站上複製了兩個模塊。 (無論組件出現多麼穩固和無害,請不要在活動網站上先嘗試它,否則可能會破壞整個網站。)

我偏向於PDF閱讀器 ,因為它似乎有比PDF更多的選項(如Google文檔)。 所以我決定首先嘗試PDF ,以避開它。

PDF失敗:需要編譯?

但是,當我安裝PDF並閱讀README.txt時,我發現了一個我曾經看到但在項目頁面上被忽略的問題。 出於某種原因,這個模塊似乎需要您手動編譯pdf.js。 雖然項目頁面顯示這不一定是必需的,但是README.txt表明它是。

由於PDF Reader會使用完全相同的庫而不需要這一步,因此我決定首先嘗試它。 如果它不起作用,我總是可以回到PDF並嘗試手動編譯pdf.js。

PDF閱讀器:成功! 有點。

所以,終於,我嘗試了PDF閱讀器 。 該模塊提供了用於顯示文件字段的新窗口小部件。 您可以將文件字段添加到所需的內容類型 ,並將窗口小部件類型設置為PDF閱讀器。 然後,您創建這種類型的節點並上傳您的PDF。 PDF出現嵌入在頁面上的“框”中。

您可以通過再次編輯內容類型並更改字段的顯示設置來嘗試不同的顯示選項。

我發現每個顯示選項都有優點和缺點:

因此,最終,我的解決方案是使用PDF閱讀器Embed顯示選項。 該選項允許我將PDF附加到Drupal節點,並可靠地將其顯示在Drupal網頁上。

不幸的是,有時候“可靠”是不夠的。 在所有這些搜索之後,我必須考慮第三方服務。