Как сделать читалку на сайте

Добавил пользователь Владимир З.
Обновлено: 07.09.2024

В настоящее время наиболее популярными и удобными способами чтения являются электронные книги. Их можно взять с собой куда угодно, они экономят бумагу, отображение текста в них можно настраивать так, как удобно читателю. По этим причинам появилось множество форматов электронных книг, основные из которых это EPUB, FB2 и MOBI. Всем известные DOC и TXT тоже являются форматами электронных книг, однако их возможности по сравнению с вышеуказанными весьма ограничены. У каждого из форматов есть свои преимущества, однако наиболее часто используемыми являются EPUB и FB2, причём второй популярен только у нас в России.

Одной из особенностей этих форматов является то, что для них нужна специальная программа, которая может работать с конкретным форматом. Поэтому в App Store или Google Play можно найти большое количество разнообразных читалок под все известные форматы. В этой статье мы попробуем написать свою собственную читалку электронных книг. Для этой цели мы воспользуемся специальной SDK от разработчиков FBReader, который доступен по следующей ссылке.

В сентябре этого года FBReader выпустили свой собственный SDK для Android, позволяющий создавать свои собственные читалки на его основе. FBReader SDK обладает большим функционалом, который включает в себя следующие возможности:

  • Открытие любых файлов электронных книг (ePub, fb2, mobi, и так далее)
  • Чтение метаданных из файла книги
  • Особенности движка FBReader
  • Возможность менять стиль текста книги

Кроме того, библиотека предоставляет и различные дополнительные возможности для реализации в приложениях, такие как:

  • Выделение текста
  • Закладки
  • Поиск по тексту
  • Оглавление
  • Дополнительная навигация по тексту
  • Поддержка сносок и гиперссылок
  • Настройка яркости

Отдельно стоит отметить, что, хоть FBReader SDK и можно скачать с сайта бесплатно, после встраивания в приложение она будет работать в демо-режиме, который имеет полный функционал, но показывает только несколько первых страниц книги. Для того, чтобы получить полную версию библиотеки, нужно купить её на сайте разработчика и, следуя инструкциям, получить специальный ключ SDK, который затем добавляется в приложение.

В этой статье мы рассмотрим, как на основе FBReader SDK создать свою собственную читалку электронных книг и посмотрим её возможности.

Начнём с добавления SDK в свой проект. Для этого создадим новый проект с пустой активностью. В качестве минимального API укажем API 16.


В файле build.gradle модуля проекта добавим в блок allprojects ссылку для скачивания нужных нам библиотек.

Затем в файле build.gradle модуля приложения добавим зависимости с библиотеками в блок dependencies.

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

В этом же файле в блок android добавим следующие строки, которые должны обеспечить успешную сборку проекта.

На сайте SDK разработчики также предоставляют исходный код различных компонентов, которые упрощают реализацию интерфейса. Скачаем его и добавим в проект. Для этого перенесём оттуда папку fbreader в папку своего проекта. После этого в файле settings.gradle пропишем эту папку и пути до нужных модулей.

Теперь добавим зависимости с ними в файле build.gradle модуля приложения.

Когда IDE пересоберёт проект, мы увидим добавленные модули в списке слева.


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

Начнём с разметки. Для MainActivity добавим на экран компонент RecyclerView, который будет содержать собственно список файлов. Для этого добавим в файл layout/activity_main.xml следующий код.

Теперь инициализируем этот объект в коде активности. Откроем файл MainActivity.java и добавим следующий код.

Для того, чтобы работать с файлами, хранящимися на устройстве, нам потребуется запрашивать специальное разрешение. Добавим в манифест приложения AndroidManifest.xml следующие разрешения.

Начиная с API 23 это разрешение необходимо запрашивать у пользователя в рантайме. Для этого при запуске приложения будем проверять версию Android на устройстве и при необходимости отправлять пользователю запрос на получение разрешения.

Получить результат запроса можно, переопределив метод активности onRequestPermissionResult(). Если разрешение приложению было предоставлено, продолжаем дальнейшую работу.

В методе generateList() мы будем искать нужные файлы на устройстве и отображать их в списке приложения. Для этого создадим AsyncTask, который будет выполнять всю работу в отдельном потоке и возвращать готовый список с найденными файлами. Добавим следующий код в MainActivity.

Полученный результат нужно отобразить. Для этого нам понадобится адаптер для RecyclerView и модель, в которой будут храниться данные элементов списка. Создадим простой класс BookFile, в котором мы будем хранить имя файла и путь до него на устройстве.

Теперь нам нужен адаптер, в который мы будем загружать список. Добавим разметку для элемента списка, для этого создадим файл layout/file_list_item.xml и добавим в него следующий код.

Теперь создадим класс BooksAdapter, который будет наследовать от RecyclerView.Adapter<>. В нём нам нужно инициализировать элементы списка, загружая в них пути и имена файлов электронных книг. Таким образом, код адаптера будет выглядеть следующим образом.

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

Вернёмся в главную активность. В методе generateList() мы запускаем AsyncTask и привязываем к нему слушатель, который должен вызывать метод onTaskCompleted() при завершении работы. В этом методе нам нужно составить список, отсортировать его по имени и передать в адаптер. Добавим сюда следующий код:

Теперь, запустив приложение, мы можем увидеть список файлов электронных книг, которые есть на устройстве.


Однако нам нужно этот файл открыть и прочитать, в этом нам и поможет FBReader SDK. Создадим новую активность, назовём её ReaderActivity. Теперь из скачанного исходного кода нам понадобится несколько классов. Откроем в папке с исходным кодом samples/extensions/src/main и скопируем себе в проект целиком папку res, за исключением res/layout/main.xml, и из java/org/fbreader/sample/extensions скопируем все классы, кроме MainActivity.java. Эти классы содержат готовые компоненты, которые помогут нам в создании читалки, при желании их можно модифицировать в соответствии с потребностями.

Теперь откроем layout/reader_activity.xml и добавим в него следующий код разметки.

TextWidgetExt является обёрткой класса библиотеки TextWidget, этот класс является основным и именно он отображает содержимое книги.

Инициализируем теперь эти объекты в коде активности ReaderActivity.java.

Мы должны получить от главной активности путь до файла, который пользователь хочет открыть. Для этого мы будем передавать интент из одной активности в другую, содержащий нужный путь. Вернёмся в MainActivity.java и добавим код создания интента в метод onBookOpen() интерфейса адаптера.

После этого отправленный интент нам нужен получить в ReaderActivity.java при старте активности. Добавим в onCreate() запись пути файла.

Полученный путь мы передаём в метод setBook() у объекта TextWidgetExt. После этого он должен нам вернуть объект Book, который можно получить с помощью метода TextWidgetExt controller(). Если объект не будет равен null, значит загрузка содержимого прошла успешно и можно показать книгу пользователю.

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


Однако это не весь функционал, на который способна данная SDK. Ранее мы добавляли файлы ресурсов: различные разметки, иконки и меню. Добавим меню в наше приложение, для этого в ReaderActivity.java переопределим метод onCreateOptionsMenu() и добавим в него следующий код.

Также переопределим методы onPrepareOptionsMenu() и onOptionsItemSelected() для работы с этим меню.

Таким образом мы добавим в читалку меню, позволяющее нам:

  • Менять размер текста
  • Менять стиль текста
  • Искать по тексту
  • Открывать оглавление

По поводу оглавления стоит сказать отдельно. В коде, взятом из библиотеки, оглавление представлено в виде отдельной активности, мы её скопировали ранее, но не добавили в манифест. Поэтому откроем файл манифеста AndroidManifest.xml и зарегистрируем в нём новую активность.

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


При выборе главы обратно в ReaderActivity будет возвращаться номер страницы, на которую нужно перейти. Чтобы получить этот результат, в ReaderActivity.java мы переопределим метод onActivityResult(), в который добавим следующий код.

Как можно увидеть, библиотека предоставляет разработчикам весь свой функционал, единственным ограничением бесплатной версии здесь является то, что она открывает только первые несколько страниц книги, о чём говорится при открытии книги.


Если вы купили ключ SDK и хотите добавить его в своё приложение, вам понадобится в файле build.gradle модуля приложения добавить в блоке buildTypes следующий код.

Не смотря на то, что движок FBReader достаточно мощный, а также учитывая графические ресурсы, добавляемые вместе с библиотекой, итоговый APK получился небольшого размера, что говорит о хорошей оптимизации библиотеки.


Итак, с помощью FBReader SDK и небольшого количества кода мы смогли создать простую читалку для электронных книг. Можно уже оставить как есть, либо продолжить модифицировать, изменяя интерфейс и дизайн так, как нужно разработчику. Пока что SDK есть только на Android, но разработчики планируют к концу года выпустить версию и для iOS.

Пишем читалку электронных книг на Android с помощью FBReader SDK : 6 комментариев

В начале написали бы что SDK платная )) причем оочень дорогая ))

Так писали же, что платная.

А есть альтернативы?

SDK не только платная, но еще и очень дорогая. 1000 долларов за лицензию на одно приложение это уж слишком.

Я дико извиняюсь, но по вашему уроку библиотека совершенно точно не хочет подключаться. Можете, пожалуйста, уделить немного времени на помощь? Спасибо.

Это если говорить об электронных изданиях с точки зрения читателей.



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

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

И в третьих, издать электронную книгу можно за неделю , а не за несколько месяцев, как с традиционным бумажным форматом.

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

Тем не менее, электронная книга должна быть комфортной для чтения — значит, надо подумать структуре текста и о цифровом формате сохранения файла, чтобы все буквы и рисунки остались на своих местах. А еще книга должна быть заметной для читателей — обложка в этом деле первый помощник.

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

Название расшифровывается как Electronic Publication — этот тип файлов поддерживают все популярные ридеры — формат принят международной организацией International Digital Publishing Forum.

Этот редактор можно назвать универсальным — он установлен практически на всех компьютерах — позволяет сохранять тексты в популярном формате docx, создавать структуру книги, добавлять иллюстрации. Функционал этого сервиса для большинства авторов достаточен. Онлайн-версии этого редактора есть и в бесплатных облачных сервисах, таких, как Облако. Mail и Яндекс. диск

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

Эту программу компьютерной вёрстки используют профессионалы в типографиях, но она подходит и для подготовки цифровых публикаций — конвертировать из неё можно в различные форматы. Однако такое ПО требовательно к техническим характеристикам компьютера — то есть поставить его можно не на любое устройство, а на более мощные агрегаты. Кроме того, функционал может быть избыточен для начинающих авторов.

Обложка — лицо книги , то, за что в первую очередь цепляется взгляд. Она может сыграть роль при выборе даже большую, чем название произведения и имя автора. Кто, как ни создатель произведения, лучше поймет, что в книге самое главное, что достойно оказаться на первом плане? Немаловажно соответствие обложки содержанию — важно не просто заманить читателя, а исполнить обещанное на обложке.

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

В ЛитРес: Самиздат для обложки необходимо использовать файлы в формате PNG или JPG в цветовом пространстве RGB и в разрешении не меньше 2400 на 3405 пикселей.

Создать электронную книгу так же просто, как новый документ в Microsoft Word (это, кстати, один из самых доступных сервисов для создания digital-изданий). Главной задачей для писателя остаётся написать текст . После — разбить на главы . И, при необходимости, добавить иллюстрации. Сохранить в правильном формате. А дальше — публиковать.

От места распространения зачастую зависит успех произведения и автора. Можно размещать его на личном авторском сайте или на собственных страницах в соцсетях. Но эффективнее — на специальной издательской площадке: так книга будет доступна максимально широкому потенциальному кругу читателей. К примеру, сайт ЛитРес: Самиздат позволяет авторам напрямую отправлять свои произведения в онлайн книжные магазины и получать авторское вознаграждение (если книга распространяется не бесплатно).

Зарегистрироваться в сервисе — указать почту и пароль, перейти по ссылке на почте в личный кабинет. И, по желанию, заполнить информацию об авторе и подтвердить профиль — это облегчит дальнейшую автоматическую публикацию от своего имени;

После проверки книга автоматически появится в сетевых книжных магазинах, таких, как ЛитРес, Озон, Google Play, iBooks и многих других. После этого в личном кабинете можно будет следить за статистикой скачиваний и загружать новые книги.

Александр

Александр Кузнецов | 23 Декабря, 2020 - 17:55

Text To Speech

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

Удобный вариант — добавить в браузер расширение, которое озвучит текст статьи голосом в то время, когда вы занимаетесь каким-нибудь делом. Само собой, нужно расширение с поддержкой русского языка.

Как добавить синтезатор речи в браузер?

Если вы используете Chrome, Firefox или Opera, установите расширение Intelligent Speaker. Оно поддерживает два десятка языков, включая русский, и автоматически озвучивает текст на веб-странице.

Intelligent Speaker

В очередь можно добавить несколько ссылок, тогда расширение будет последовательно читать вам текст с каждой из этих страниц. Также можно загрузить в него текстовый файл в формате.pdf, .txt или.docx — текст будет распознан и озвучен. Озвученный текст можно скачать в формате.ogg, который воспринимается большинством плееров.

В расширении есть перемотка для быстрого перехода к разным фрагментам текста, кнопка паузы для приостановки чтения и настройки скорости чтения от 0,8x до 2x. Не хватает только выбора голоса, есть только женский, и робот иногда коверкает слова или неправильно ставит ударения, чем усложняет восприятие текста. Недостаток этого расширения в том, что в месяц можно бесплатно слушать всего один час озвучки текста, а затем надо оформлять платную подписку.

library_softwares.jpg

Вначале надо определиться для чего создаётся электронная библиотека? Для домашнего использования или корпоративного.

Содержание

Здесь надо искать не столько программу электронной библиотеки, сколько книжный менеджер. Подойдет бесплатный Calibre, существующий для Windows, macOS, Linux.

Если нужна мобильная электронная библиотека, то можно книги выложить в Dropbox или иной облачный диск и подключить существующие совместимые с диском читалки.

Здесь надо вначале определиться что вам нужно. Надо ли ограничивать доступ и защищать от скачивания, нужна ли бесплатная программа или вы готовы заплатить. Надо ли с кем-то и чем-то интегрироваться по API или авторизовать пользователей откуда-то ещё, насколько для вас принципиален интерфейс и удобство плеера и т.д.

Я рассматриваю только такие электронные библиотеки, которые можно скачать и установить на собственном сервере.

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

При некотором желании можно доработать до нужного функционала и Drupal Biblio.

Чуть подробнее перечислю те из них, что заслуживают внимание:

dspace.jpg

Эта не совсем электронная библиотека, скорее институциональный репозитарий открытого доступа (т.е. архив научных статей под открытыми лицензиями). С этой задачей DSpace справляется хорошо прежде всего за счёт того, что статьи из него хорошо индексируются Google Scholar, а это то, что надо для научный статей - чтобы их нашли другие учёные. Интерфейс, удобство - создатели DSpace не слишком внимательно за этим следят, поэтому если вы захотите использовать DSpace в качестве электронной библиотеки, его придётся заметно допиливать собственными силами, для чего нужен человек, разбирающийся в Java. Есть русское сообщество.

rescarta-collection.jpg

Ещё одна бесплатная электронная библиотека на Java. Довольно простая, потому для сложных задач не очень подходит, но если надо несколько сотен оцифрованных книг в интернете показать, можно использовать.

Система управления ресурсами на PHP. Есть Omeka Classic. Больше походит не на электронную библиотеку, а на CMS с метаданными под библиотеку. Предполагается, что для использования организация захочет программу доработать под себя.

В России используется редко.

Также есть еще одна версия ПО Omeka S, примеры.

Платные электронные библиотеки бывают как отдельные, так и в составе автоматизированных библиотечных информационных систем (АБИС).

Начнём с тех, что производят разработчики АБИС.

Информации по библиотеке не очень много, в последний раз когда видел, плеер документов работал на Adobe Flash (RBooks), но обещали плеер заменить на PDF.js. Цена примерно 500 тыс. руб.

ruslan-neo.jpg

Разработка 2016 года путем рефакторинга АБИС ИРБИС64 с добавлением функционала под электронную библиотеку. Цена, если ИРБИС64 ещё не куплен, примерно 500 т.р.

Система интересна прежде всего владельцам ИРБИС64, т.к. сам ИРБИС64 довольно сложен, но если библиотекари уже умеют с ним работать, им будет просто освоить и библиотечный функционал.

Есть модули электронных библиотек и в других АБИС, все их перечислять не будем, остановившись на двух самых сложных отечественных АБИС. Продолжим знакомство с программами электронных библиотек на базе систем документооборота.

Программа от разработчиков АБИС OPAC-Global с плеером FlippingBook.

opac-global.jpg

Biblio STOR-M состоит из АРМ-а библиотекаря и веб-интерфейса и во-многом является ответвлением от системы управления предприятием. Имеет богатый функционал по управлению правами, доставшийся от родительского проекта. Поддерживает загрузку видео.

biblio_storm.jpg

Цена не опубликована. Вероятно более 1 млн. руб.

Xerox Полнотекстовая электронная библиотека сделана на базе Xerox DocuShare. Имеет мобильный интерфейс и поддерживает загрузку видео.

xerox_peb.jpg

Цена не опубликована. Вероятно более 1 млн. руб.

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

inforost.jpg

ИнфоРост примечателен тем, что не только продаёт ПО, но и оказывает услугу хостинга.

Цена: от 260 т.р. за локальную версию и от 134 т.р. за аренду ПО в облаке.

Библиотека ELiS работает поверх CMS. Имеет открытый исходный код, мобильную версию и кроме PDF поддерживает видео, EPUB, презентации, статические веб-ресурсы.

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

elis-library.jpg

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

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

Читайте также: