如何选择用于查看PDF的Drupal 7模块

模块选择艺术的个案研究

最近,一位客户要求我为公司的Drupal站点添加一项新功能:在浏览器中显示PDF文件。 当我浏览drupal.org上的选项时,我意识到这是一个完美的机会来记录我选择新模块时的实际决策过程。 我一直在说明智地选择模块 ,但现在你可以看到我认为这在现实生活中的作用。

定义你想要的

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

在Drupal.org上搜索

考虑到这些目标,下一步就是在Drupal.org上简单搜索。 有时间跳进Mod​​ule 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网页上。

不幸的是,有时候“可靠”是不够的。 在所有这些搜索之后,我必须考虑第三方服务。