Недавно клиент попросил меня добавить новую функцию на сайт Drupal компании: отобразить PDF-файлы в браузере. Когда я просмотрел варианты на drupal.org, я понял, что это был прекрасный шанс документировать мой фактический процесс принятия решений, когда я выбрал новый модуль. Я всегда говорю, что выбирать модули разумно, но теперь вы можете видеть, как я думаю, что это работает в реальной жизни.
Определите, что вы хотите
Первый шаг - определить, что вы хотите. В моем случае я хотел:
- Возможность просмотра PDF-файлов в веб-браузере, аналогично этому примеру. Клиент будет загружать PDF-файлы информационного бюллетеня компании, и посетители смогут легко их прочитать.
- Сайт Drupal 7, поэтому модуль должен соответствовать этой основной версии. (Drupal 7 уже давно отсутствует, поэтому, если разработчик модуля еще не вышел с версией Drupal 7, они, вероятно, не будут.)
- Хотя клиент не указал этого, я также хотел не полагаться на сторонний сервис. Для видеороликов я рад опубликовать контент на YouTube или Vimeo, а затем внедрить его на сайт Drupal, но для PDF-файлов я не думал, что возможное дополнительное облучение перевешивает потенциальные хлопоты, поломки и расходы. Тем не менее, я был открыт для сторонних служб, если это был единственный вариант.
- Несмотря на мое желание избежать стороннего сервиса, я знал, что мой выбор, вероятно, потребует стороннего Javascript библиотека , Хотя это добавит дополнительный шаг к будущим обновлениям, я обычно чувствую себя лучше, когда я запускаю свою собственную копию библиотеки, а не полагаюсь на стороннюю службу.
- Я хотел, чтобы модуль был как можно более легким и конкретным. Я не хотел вмешиваться в какой-то радикально новый способ обработки или организации медиафайлов. Я хотел что-то большее, как Colorbox, которое увеличивает изображения для лучшего просмотра, но остается полностью независимым от того, как вы выбираете управление файлами изображений. У меня была догадка, что эта библиотека будет pdf.js, но я был открыт для других возможностей.
- Как обычно, я хотел следовать общим рекомендациям по выбору модуля Drupal. В принципе, выберите модуль, который уже использовался несколькими тысячами человек (если возможно) на некоторое время, с минимальными зависимостями, которые, как представляется, поддерживаются активным разработчиком, который планирует продолжать поддерживать проект в будущем и не делает этого, t требуется лицензионный сбор.
Поиск на Drupal.org
С учетом этих целей следующим шагом был простой поиск на Drupal.org. Время прыгать в шаровую яму модульного божества.
Страница «Сравнение» для модулей PDF
Моя первая остановка была (или должна была быть) на этой странице: Сравнение модулей просмотра PDF. Drupal.org имеет прекрасную традицию страниц документации, в которых описываются плюсы и минусы различных модулей в одном и том же пространстве. Есть центральный список страниц сравнения, но они также разбрызгиваются по всему сайту.
Страница сравнения PDF включала четыре модуля просмотра PDF. Я покрою их здесь, а также пару других, которых я нашел из поиска. Я начну с кандидатов, которых я решил пропустить.
Теперь давайте углубимся в особенности того, почему эти модули (или в основном не работали) работают над этим проектом.
Просмотр файлов
File Viewer использует Internet Archive BookReader, который заинтриговал меня, потому что я наркоман интернет-архива. Каждый раз, когда я туда иду, я чувствую щекотания страха и сокрушаюсь в горах книг, которые я могу вырвать из эфира.
При этом демонстрационный сайт выглядел немного уродливым для меня. Я мог бы жить с этим, но я сомневался, что мой клиент будет, когдаpdf.js
выглядит намного стилее.
Кроме того, на второй взгляд на страницу проекта я увидел большое смелое объявление наверху:Этот модуль был перемещен в формат PDF формально, Справедливо. С менее чем 400 установками, слияние с более популярным модулем PDF (который мы рассмотрим в одно мгновение), кажется хорошим шагом. Никогда не загружайте модуль, который был объединен / перемещен / оставлен.
Форматировщик файлов Google Viewer
Google Viewer File Formatter - это то, на что это похоже: способ использования Документов Google для встраивания отображения файлов на вашу веб-страницу. Хотя мне нравилась универсальность Документов Google, одна из моих целей заключалась в том, чтобы оставаться независимыми от сторонних сервисов.
Кроме того, этот модуль имел менее 100 установок.
Ajax Document Viewer
Хотя «AJAX» является общим термином Javascript, Ajax Document Viewer оказался в стороне от конкретной сторонней службы. Только около 100 установок. Двигаемся дальше …
Скальд PDF
У Scald PDF было всего 40 инсталляций, но я должен был посмотреть, так как он был явно частью более крупного проекта (да) Scald. На странице проекта Scald объяснили: Scald - это новаторский подход к управлениюАтомы СМИ в Drupal. "
В этом предложении были подняты два огромных красных флажка: «инновационный подход» и слово «медиа» в паре с «Атом». «Атом» был явно пересмотренным словом «вещь», что сделало его красным флагом само по себе. У Drupal есть склонность к этим пустым типам слов: узел , юридическое лицо , особенность … Чем более общим является слово, тем более возможны изменения.
Когда я прокрутил вниз, мои подозрения были подтверждены. Я читал возбужденные заявления о том, как Скальд в основном изобретает, как я работал с Media на своем сайте.
Теперь правда в том, что обработка Drupal's Media может использовать некоторое переосмысление. Scald - не единственный амбициозный проект в этом пространстве.Однако, с менее чем 1000 установок до сих пор, я не хотел входить на первый этаж.
Конечно, к этому времени в следующем году Скальд может стать следующим «Взглядом». Это будет качать. Но это может также быть отказ от использования, с небольшим следом сломанных сайтов, оставшихся плакать.
На данный момент я хотел придерживаться гораздо менее амбициозного и опасного решения. Просто покажите PDF-файлы, пожалуйста. Это все, что я просил.
вести бой с тенью
Shadowbox удивил меня: он утверждал, что это единственное решение для отображения всех видов носителей, от PDF-файлов до изображений и видео. Это было не так сильно, как Скальд, поскольку он отображение без введения совершенно новых концепций, таких как «Атомы СМИ». Но я уже как Colorbox, как я уже говорил. Я не хотел пересматривать это решение.
Однако я заметил (с внутренним стоном), что с16,000 устанавливает, Shadowbox может быть более мощной альтернативой в том же пространстве. я имел посмотреть.
Модуль Shadowbox Drupal в основном представляет собой мост к библиотеке Javascript Shadowbox.js, поэтому я проверил веб-сайт библиотеки. Там я обнаружил две причины:
- Библиотеке требуется лицензионный сбор для коммерческого использования. Плата была достаточно разумной, но я стараюсь избегать открытого программного обеспечения, которое не является бесплатным.
- Тщательный поиск часто задаваемых вопросов показал, что, вопреки описанию на странице модуля Drupal, файлы PDF не 100% поддерживается библиотекой Shadowbox. К сожалению. Хорошо, что я проверил.
Два претендента: «PDF» и «PDF Reader»
Исключив все остальное, я пришел к двум очевидным соперникам: PDF и PDF Reader
Эти два проекта имели ключевое сходство:
- У обоих было почти 3000 инсталляций, намного больше, чем альтернативы (кроме Shadowbox).
- Оба использовали ту же внешнюю библиотеку Javascript,
pdf.js
.
Как насчет различий?
PDF Reader также имел возможность интеграции Google Docs. В этом конкретном случае я думал, что моему клиенту это может понравиться, поэтому мне понравился вариант.
В то же время, PDF был отмечен какПоиск сопроводителя (ов)
, Это может быть признаком того, что разработчик вскоре покинет проект, но, с другой стороны, последнее совершение было неделю назад, поэтому по крайней мере разработчик все еще был активным.
С другой стороны, PDF Reader был отмечен какАктивно поддерживается
, но последняя фиксация была год назад.
Без явного победителя я решил проверить их обоих.
Тестирование претендентов
Я протестировал оба модуля на копии моего живого сайта. (Независимо от того, насколько твердый и безобидный модуль появляется, никогда не пытайтесь сначала на живом сайте. Вы можете сломать весь свой сайт.)
Я был склонен к PDF Reader , потому что у него было больше вариантов (например, Документов Google), чем PDF , Поэтому я решил попробовать PDF во-первых, чтобы избавиться от него.
Ошибка PDF: требуется компиляция?
Однако, когда я установил PDF и читатьREADME.txt
, Я обнаружил проблему, которую я видел, но проигнорировал ее на странице проекта. По какой-то причине этот модуль, кажется, требует, чтобы вы компилировалиpdf.js
вручную. Хотя на странице проекта было указано, что это необязательно требуется,README.txt
предположил, что это так.
поскольку PDF Reader будет использовать ту же самую библиотеку, не требуя этого шага, я решил попробовать ее в первую очередь. Если бы это не сработало, я всегда мог вернуться к PDF и попытайтесь вручную скомпилироватьpdf.js
.
PDF Reader: Успех! Вроде, как бы, что-то вроде.
Итак, наконец, я попробовал PDF Reader , Этот модуль предоставляет новый виджет для отображенияфайл
поле. Вы добавляете поле файла к вашему желаемому типу контента и устанавливаете тип виджетовPDF Reader
, Затем вы создаете узел этого типа и загружаете PDF-файл. PDF-файл отображается в «поле» на странице.
Вы можете попробовать различные параметры отображения, снова отредактировав тип контента и изменив настройки отображения для этого поля.
Я обнаружил, что у каждой опции дисплея были плюсы и минусы:
- Гугл документы читатель отлично работал как встраивание, но когда я щелкнул его, чтобы перейти в полноэкранный режим, я попал на страницу Документов Google, в которой извинился, что мой предел ставки был превышен. К сожалению. Возможно, это было бы более надежно, если бы я подключил модуль к платной учетной записи Google Apps, но я не стал узнавать, так как был уверен, что моему клиенту не понравится дисплей.
- pdf.js вариант отлично работал … на Firefox и Chrome. Но когда я запустил Internet Explorer, окно оказалось пустым. По-видимому, это проблема с
pdf.js
сам, а не PDF Reader модуль. Полагаю, я должен был ожидать этого, учитывая, чтоpdf.js
разработан Mozilla, а Internet Explorer - сама. Тем не менее, я был разочарован тем, что я не думал утверждать, чтоpdf.js
работали надежно во всех браузерах в первую очередь. - встраивать вариант был самым надежным. Это фактически привело Adobe Reader в поле на веб-странице. Мой Firefox все еще предпочитал запускать
pdf.js
, но я думаю, что это была настройка браузера. В любом случае, до тех пор, пока у посетителя есть Firefox или просмотрщик PDF, например Adobe Reader, отобразится PDF.
Таким образом, в конце концов, я решил использовать PDF Reader свстраивать дисплей. Этот параметр позволит мне подключить PDF к узлу Drupal и надежно отобразить его на веб-странице Drupal.
К сожалению, иногда «надежного» недостаточно. После всего этого поиска, я должен был рассмотреть сторонний сервис в конце концов.