Нам обещали обновить плеер для Национальной электронной библиотеки (НЭБ) и вот это произошло.
Плеер для PDF-штука гораздо более сложная, чем может показаться на первый взгляд (так в ELiS плеер для PDF содержит 3261 строку кода). И да, часто допускаются типовые ошибки.
Попробуем посмотреть на те из них, что допущены в НЭБ.
Содержание
Внешний вид плеера[править]
Так выглядит плеер:
Очевидно вдохновение было почёрпнуто в старом плеере РГБ, работающем на https://search.rsl.ru. Пример плеера: https://dlib.rsl.ru/viewer/01003401293#?page=1
Пройдемся по архитектурным решениям. В левой части есть эксизы, в правой выводится по одной странице книги. В верхней панели кнопки перелистывания страниц. Страницы стримятся в PNG с водяным знаком из email пользователя. Водяной знак на всех страницах. По-умолчанию страница вписывается по высоте. Есть режим негатива и поиск с подсветкой найденных слов.
Есть мобильный интерфейс:
Перейдем к обсуждению ошибок.
Нерациональное использование места[править]
PDF - это фиксированная верстка. Страницы имеют заданную ширину и высоту. Поэтому возникает проблема как их показать на экране так, чтобы читать буквы было удобно. Если страница книги будет отображаться очень маленькой (вписана по высоте), то буквы тоже будут маленькими и их читать станет сложно. Если слишком большой (вписана по ширине), то слишком большие буквы читать неудобно.
Итак, в НЭБ по-умолчанию страница вписана по высоте. Но только на самом популярном десктопном разрешении 1366х768 эта высота не может быть больше 768 пикселей. А с учетом адресной строки браузера и того меньше. В НЭБ проблему усугубили, добавив сверху совершенно не нужные панели, верхняя из которых вообще бесполезна (справа отступает кнопку профиля), а отступ с заглавием и автором всегда перекрывает часть страницы и не убирается.
Обратите внимание, сколько мало места остается под то, чтобы вписать страницу по высоте. Буквы получаются мелкими. Если у вас монитор с размером экрана меньше 22 дюймов, читать текст будет сложно. А на самом популярном десктопном разрешении даже неприятно.
Давайте сравним сколько страница на том же разрешении 1366х768 занимает в плеере ELiS:
Обратите внимание, что в ELiS используется режим скроллинга, а не постраничный просмотр (постраничный в ELiS тоже есть), и что ширина страницы в ELiS существенно больше ширины страницы в НЭБ. Буквы в НЭБ выглядят размытыми, а в ELiS четкими.
Почему так происходит? А потому что в ELiS целых три режима просмотра и выбирается оптимальный для данного документа. Самый частый - режим скроллинга. В нем ширина страницы выбирается исходя из размеров страницы PDF таким образом, чтобы читать было удобно и она была 1.3 * размер страницы в мм (т.е. горизонтальный размер страницы выбирается с учетом физических размеров экрана таким образом, чтобы размер страницы на экране был равен физическому размеру напечатанной страницы с поправочным коэффициентом 1.3 на то, что мониторы стоят дальше, чем мы держим в руках книгу). Поэтому в ELiS книга открывается так, что ее читать удобно и не надо при всяком открытии дёргать зум.
В НЭБ же если страница выравнена по высоте плеера, а высота еще и съедена ненужными панелями, то текст будет удобным только если книга в A5, а в остальных случаях придется подкручивать зум.
В ELiS есть и двухстраничный и одностраничный режим с вписыванием страницы по высоте. В некоторых случаях он также автоматически активируется, если плеер решает, что в таком режиме смотреть лучше, чем в режиме скролла.
В НЭБ же всегда вывод только по одной странице. И в большинстве случаев пользователь будет выкручивать зум.
Большинство ЭБС также в своих плеерах используют режим скроллинга и делают это потому, что режим постраничного просмотра удобен в довольно ограниченном числе случаев.
Перелистывание[править]
Пользователь открыл книгу, настроил зум. Ну, почитал что-то и пора страницу перелистнуть.
В плеере НЭБ поддерживается перелистывание горизонтальной проводкой пальца, что удобно на планшетах и смартфонах (здесь все удобно), но вот на десктопе есть проблема.
Горячие клавиши не работают, чтобы перелистнуть страницу на десктопе, надо ткнуть в мелкую кнопку в верхней панели!
Скроллом страницы тоже не перелистываются (что и ясно, ведь если вы настроили зум, то скроллом вы протягиваете страницу вверх и вниз и этим же скроллом в одностраничном режиме просмотра перелистывать страницу реализовать можно, но это не так просто).
Излишне говорить, что в ELiS и горячие клавиши работают и перелистывание кликом в левую или правую часть страницы. Да и у многих современных ЭБС в плеерах с этим тоже проблем нет.
Выделение текста[править]
Его нет.
Переход по ссылкам будет невозможен.
Поиск[править]
Вот поиск по книге организован неплохо. Отличительная черта - подсветка слов прямо на выводимой странице, что у других встречается не так часто. За поиск по книге - хвалю.
Правда есть баг - если долго не читать, то тебя разлогинивает, но не показывает об этом и если в этот момент сделать поиск, то он будет выполняться бесконечно и в чем проблема - может быть не понятно.
Ночной режим[править]
Ночной режим в НЭБ бесполезен от слова совсем. У НЭБ черной становится только страница, а плеер так и остается в светлых тонах и весь этот белый фон будет светить читателю в глаза в темноте.
Ещё делаю небольшую подсказку: в ночном режиме цвет текста не должен быть белым. Белый - слишком яркий. Его надо делать серым. Ну и черный (RGB 000) - не наш подход. Пример из ELiS:
Водяные знаки[править]
Все. Все кто впервые делает какой-либо "защищенный" плеер в браузере, начинает пихать на страницу водяные знаки с идентификаторами пользователя. Так называемый "социальный DRM".
То, что читать потом такой текст становится затруднительно - владельцев не волнует. На халяву - уксус сладкий. Бог терпел - и нам велел. Ага?
Ну ладно читать. НЭБ-же, это во многом про науку. А наука что обильно делает? Правильно, цитирует. Совершенно легально, кстати, ст. 1274 ГК РФ.
Ну и кроме цитирования текста иногда надо и графики позаимствовать. Не всё же можно словами объяснить. И здесь выясняется, что водяные знаки оказывают положительное влияние на обучение ученых использованию Фотошопа. Ведь водяные знаки с графиков теперь надо попиксельно удалить -).
Что интересно, говорят, что правообладателям будут платить за книги, в которых пользователей изводят водяными знаками. Даже интересно теперь, а в тех книгах за которые пользователи сами в НЭБ заплатят, водяные знаки тоже будут или они только для халявщиков, за которых платит бюджет?
Ресайз текста[править]
Давайте посмотрим на текст поближе. Рисунок ниже не увеличен и отображается пиксель в пиксель. На нем сверху фрагмент страницы в НЭБ и ниже фрагмент в ELiS. Ничего не кажется странным?
Да, в НЭБ текст кажется чуть-чуть размытым. И он на самом деле размыт! Но почему? А потому, что число пикселей изображения страницы не совпадает с числом пикселей, в котором она выводится на веб-странице.
Проблему проще пояснить на примере. Пусть у нас изображение имеет ширину 620 пикселей, а выводим мы его на странице как изображение, имеющее ширину на 3 пикселя меньше. Что произойдет? Надо изображение сплющить на три пикселя. Это значит, что надо пересчитать все позиции пикселей и при этом использовать сглаживание, которое и размывает текст.
Ниже вы видите один и тот же текст, но снизу изображение отображается пиксель в пиксель, а сверху это же изображение отобразили в блоке меньшей ширины (см. на красную вертикальную линию справа чтобы увидеть, что ширина изображений немного разная).
Невооруженным глазом видно, что верхнее изображение размыто. Та же самая проблема и в НЭБ.
Избранное[править]
Пока не работает. Видимо добавят функционал потом.
Таймаут неактивности[править]
Довольно быстро истекает время на просмотр и выдается такое сообщение:
Типа человек все время должен читать книгу и ни записать что-либо, ни открыть пару книг в разных вкладках и между ними переключаться - он не должен.
На самом деле сделанные в ELiS измерения говорят, что пользователи достаточно часто оставляют вкладку открытой и ничего с ней не делают. Может открывают что-то другое в новой вкладке, может чай уходят пить, но в любом случае таймаут если и делать, то он должен быть десятки минут, а раздражать пользователя модальными окнами с вопросами - не стоит.
Госуслуги[править]
"Мягкая сила". Распространение русского языка (точнее снижение скорости его вытеснения из республик СССР среди 100+ млн. русскоговорящих людей). Все это не про платный контент НЭБ. Ведь для использования нового плеера надо иметь подтвержденный аккаунт в Госуслугах.
Почему не обойтись соцсетями? Может деньги жалко. Может хочется ловить делателей скриншотов контента (и судить небось?) и хочется знать паспортные данные нарушителя. Ну или иметь возможность их узнать через полицию. Но факт есть факт. Без аккаунта в Госуслугах плеер ничего показывать не будет.
Выводы[править]
Создание плеера для PDF - задача весьма нетривиальная, требующая решения большого количества технических трудностей. Это только по-началу кажется, что вывел рисунок, кнопки влево-вправо прикрутил и готово. На самом деле все сильно сложнее, ведь страницы в плеере надо не смотреть, а читать -).
И да, отечественным издателям и агрегаторам надо изводить в себе приступы огораживания контента защитами от копирования. Пользователю должно быть удобно! Особенно тому, который платит. Задача защиты контента не должна быть приоритетней удобства пользователя.