home

Что нам стоит плеер PDF построить? Или ошибки обновленного плеера для НЭБ

Нам обещали обновить плеер для Национальной электронной библиотеки (НЭБ) и вот это произошло.

Плеер для PDF-штука гораздо более сложная, чем может показаться на первый взгляд (так в ELiS плеер для PDF содержит 3261 строку кода). И да, часто допускаются типовые ошибки.

Попробуем посмотреть на те из них, что допущены в НЭБ.

Внешний вид плеера[править]

Так выглядит плеер:

viewer-general.png

Очевидно вдохновение было почёрпнуто в старом плеере РГБ, работающем на https://search.rsl.ru. Пример плеера: https://dlib.rsl.ru/viewer/01003401293#?page=1

search.rsl.player.png

Пройдемся по архитектурным решениям. В левой части есть эксизы, в правой выводится по одной странице книги. В верхней панели кнопки перелистывания страниц. Страницы стримятся в PNG с водяным знаком из email пользователя. Водяной знак на всех страницах. По-умолчанию страница вписывается по высоте. Есть режим негатива и поиск с подсветкой найденных слов.

Есть мобильный интерфейс:

mobile-player.png

Перейдем к обсуждению ошибок.

Нерациональное использование места[править]

PDF - это фиксированная верстка. Страницы имеют заданную ширину и высоту. Поэтому возникает проблема как их показать на экране так, чтобы читать буквы было удобно. Если страница книги будет отображаться очень маленькой (вписана по высоте), то буквы тоже будут маленькими и их читать станет сложно. Если слишком большой (вписана по ширине), то слишком большие буквы читать неудобно.

Итак, в НЭБ по-умолчанию страница вписана по высоте. Но только на самом популярном десктопном разрешении 1366х768 эта высота не может быть больше 768 пикселей. А с учетом адресной строки браузера и того меньше. В НЭБ проблему усугубили, добавив сверху совершенно не нужные панели, верхняя из которых вообще бесполезна (справа отступает кнопку профиля), а отступ с заглавием и автором всегда перекрывает часть страницы и не убирается.

player-margin.png

Обратите внимание, сколько мало места остается под то, чтобы вписать страницу по высоте. Буквы получаются мелкими. Если у вас монитор с размером экрана меньше 22 дюймов, читать текст будет сложно. А на самом популярном десктопном разрешении даже неприятно.

Давайте сравним сколько страница на том же разрешении 1366х768 занимает в плеере ELiS:

elis-player-scroller.png

Обратите внимание, что в ELiS используется режим скроллинга, а не постраничный просмотр (постраничный в ELiS тоже есть), и что ширина страницы в ELiS существенно больше ширины страницы в НЭБ. Буквы в НЭБ выглядят размытыми, а в ELiS четкими.

Почему так происходит? А потому что в ELiS целых три режима просмотра и выбирается оптимальный для данного документа. Самый частый - режим скроллинга. В нем ширина страницы выбирается исходя из размеров страницы PDF таким образом, чтобы читать было удобно и она была 1.3 * размер страницы в мм (т.е. горизонтальный размер страницы выбирается с учетом физических размеров экрана таким образом, чтобы размер страницы на экране был равен физическому размеру напечатанной страницы с поправочным коэффициентом 1.3 на то, что мониторы стоят дальше, чем мы держим в руках книгу). Поэтому в ELiS книга открывается так, что ее читать удобно и не надо при всяком открытии дёргать зум.

В НЭБ же если страница выравнена по высоте плеера, а высота еще и съедена ненужными панелями, то текст будет удобным только если книга в A5, а в остальных случаях придется подкручивать зум.

В ELiS есть и двухстраничный и одностраничный режим с вписыванием страницы по высоте. В некоторых случаях он также автоматически активируется, если плеер решает, что в таком режиме смотреть лучше, чем в режиме скролла.

В НЭБ же всегда вывод только по одной странице. И в большинстве случаев пользователь будет выкручивать зум.

Большинство ЭБС также в своих плеерах используют режим скроллинга и делают это потому, что режим постраничного просмотра удобен в довольно ограниченном числе случаев.

Перелистывание[править]

Пользователь открыл книгу, настроил зум. Ну, почитал что-то и пора страницу перелистнуть.

В плеере НЭБ поддерживается перелистывание горизонтальной проводкой пальца, что удобно на планшетах и смартфонах (здесь все удобно), но вот на десктопе есть проблема.

Горячие клавиши не работают, чтобы перелистнуть страницу на десктопе, надо ткнуть в мелкую кнопку в верхней панели!

Скроллом страницы тоже не перелистываются (что и ясно, ведь если вы настроили зум, то скроллом вы протягиваете страницу вверх и вниз и этим же скроллом в одностраничном режиме просмотра перелистывать страницу реализовать можно, но это не так просто).

next-page.png

Излишне говорить, что в ELiS и горячие клавиши работают и перелистывание кликом в левую или правую часть страницы. Да и у многих современных ЭБС в плеерах с этим тоже проблем нет.

Выделение текста[править]

Его нет.

Переход по ссылкам будет невозможен.

Поиск[править]

Вот поиск по книге организован неплохо. Отличительная черта - подсветка слов прямо на выводимой странице, что у других встречается не так часто. За поиск по книге - хвалю.

search.png

Правда есть баг - если долго не читать, то тебя разлогинивает, но не показывает об этом и если в этот момент сделать поиск, то он будет выполняться бесконечно и в чем проблема - может быть не понятно.

Ночной режим[править]

Ночной режим в НЭБ бесполезен от слова совсем. У НЭБ черной становится только страница, а плеер так и остается в светлых тонах и весь этот белый фон будет светить читателю в глаза в темноте.

neb-nightmode.png

Ещё делаю небольшую подсказку: в ночном режиме цвет текста не должен быть белым. Белый - слишком яркий. Его надо делать серым. Ну и черный (RGB 000) - не наш подход. Пример из ELiS:

elis-night-mode.png

Водяные знаки[править]

Все. Все кто впервые делает какой-либо "защищенный" плеер в браузере, начинает пихать на страницу водяные знаки с идентификаторами пользователя. Так называемый "социальный DRM".

То, что читать потом такой текст становится затруднительно - владельцев не волнует. На халяву - уксус сладкий. Бог терпел - и нам велел. Ага?

Ну ладно читать. НЭБ-же, это во многом про науку. А наука что обильно делает? Правильно, цитирует. Совершенно легально, кстати, ст. 1274 ГК РФ.

Ну и кроме цитирования текста иногда надо и графики позаимствовать. Не всё же можно словами объяснить. И здесь выясняется, что водяные знаки оказывают положительное влияние на обучение ученых использованию Фотошопа. Ведь водяные знаки с графиков теперь надо попиксельно удалить -).

figure-watermark.png

Что интересно, говорят, что правообладателям будут платить за книги, в которых пользователей изводят водяными знаками. Даже интересно теперь, а в тех книгах за которые пользователи сами в НЭБ заплатят, водяные знаки тоже будут или они только для халявщиков, за которых платит бюджет?

Ресайз текста[править]

Давайте посмотрим на текст поближе. Рисунок ниже не увеличен и отображается пиксель в пиксель. На нем сверху фрагмент страницы в НЭБ и ниже фрагмент в ELiS. Ничего не кажется странным?

text-resize-comparision.png

Да, в НЭБ текст кажется чуть-чуть размытым. И он на самом деле размыт! Но почему? А потому, что число пикселей изображения страницы не совпадает с числом пикселей, в котором она выводится на веб-странице.

Проблему проще пояснить на примере. Пусть у нас изображение имеет ширину 620 пикселей, а выводим мы его на странице как изображение, имеющее ширину на 3 пикселя меньше. Что произойдет? Надо изображение сплющить на три пикселя. Это значит, что надо пересчитать все позиции пикселей и при этом использовать сглаживание, которое и размывает текст.

Ниже вы видите один и тот же текст, но снизу изображение отображается пиксель в пиксель, а сверху это же изображение отобразили в блоке меньшей ширины (см. на красную вертикальную линию справа чтобы увидеть, что ширина изображений немного разная).

Невооруженным глазом видно, что верхнее изображение размыто. Та же самая проблема и в НЭБ.

text-resize.png

Избранное[править]

Пока не работает. Видимо добавят функционал потом.

Таймаут неактивности[править]

Довольно быстро истекает время на просмотр и выдается такое сообщение:

timeout.png

Типа человек все время должен читать книгу и ни записать что-либо, ни открыть пару книг в разных вкладках и между ними переключаться - он не должен.

На самом деле сделанные в ELiS измерения говорят, что пользователи достаточно часто оставляют вкладку открытой и ничего с ней не делают. Может открывают что-то другое в новой вкладке, может чай уходят пить, но в любом случае таймаут если и делать, то он должен быть десятки минут, а раздражать пользователя модальными окнами с вопросами - не стоит.

Госуслуги[править]

"Мягкая сила". Распространение русского языка (точнее снижение скорости его вытеснения из республик СССР среди 100+ млн. русскоговорящих людей). Все это не про платный контент НЭБ. Ведь для использования нового плеера надо иметь подтвержденный аккаунт в Госуслугах.

Почему не обойтись соцсетями? Может деньги жалко. Может хочется ловить делателей скриншотов контента (и судить небось?) и хочется знать паспортные данные нарушителя. Ну или иметь возможность их узнать через полицию. Но факт есть факт. Без аккаунта в Госуслугах плеер ничего показывать не будет.

Выводы[править]

Создание плеера для PDF - задача весьма нетривиальная, требующая решения большого количества технических трудностей. Это только по-началу кажется, что вывел рисунок, кнопки влево-вправо прикрутил и готово. На самом деле все сильно сложнее, ведь страницы в плеере надо не смотреть, а читать -).

И да, отечественным издателям и агрегаторам надо изводить в себе приступы огораживания контента защитами от копирования. Пользователю должно быть удобно! Особенно тому, который платит. Задача защиты контента не должна быть приоритетней удобства пользователя.