EPUB/CBR/PDF reader app for Nextcloud
This repository has been archived on 2024-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Michel Roux e8ced4711b
epubreader / nextcloud-22 (push) Successful in 1m6s Details
epubreader / nextcloud-27 (push) Successful in 47s Details
Merge pull request 'Update dependency psalm/phar to v5.19.1' (#25) from renovate/psalm-phar-5.x-lockfile into master
Reviewed-on: #25
2024-01-18 09:13:14 +00:00
.ci Add release script 2020-04-22 00:23:58 +02:00
.gitea/workflows Update nextcloud Docker tag to v28 2023-12-13 06:41:54 +00:00
.tx [tx-robot] Update transifex configuration 2022-10-01 03:10:40 +00:00
appinfo Increase version 2023-08-02 22:33:23 +02:00
css Initial commit from existing app 2020-04-21 22:37:42 +02:00
img Initial commit from existing app 2020-04-21 22:37:42 +02:00
js Inline PDF viewer in shared EPUB/CBZ files 2023-08-02 22:14:24 +02:00
l10n Fix(l10n): Update translations from Transifex 2023-06-08 01:45:19 +00:00
lib Add docker environment and fix sharing folder 2023-08-02 22:28:07 +02:00
public Move JS to public 2023-06-18 01:47:01 +02:00
screenshots Rename screenshots to new app name 2020-04-23 10:57:12 +02:00
stubs/OC/Hooks cleanup (again) 2023-08-02 22:04:03 +02:00
templates cleanup (again) 2023-08-02 22:04:03 +02:00
.dockerignore Add docker environment and fix sharing folder 2023-08-02 22:28:07 +02:00
.gitignore Refacto all project 2023-06-16 16:58:23 +02:00
.php-cs-fixer.dist.php cleanup (again) 2023-08-02 22:04:03 +02:00
CHANGELOG.md Correcting text 2020-04-24 10:39:37 +02:00
Dockerfile Update nextcloud Docker tag to v28 2023-12-13 06:41:54 +00:00
LICENSE Add correct license to project 2020-04-23 10:37:20 +02:00
README.md l10n: Replace the apostrophe with double quotation 2021-05-06 14:38:31 +02:00
TODO Initial commit from existing app 2020-04-21 22:37:42 +02:00
composer.json Update dependency nextcloud/ocp to v28 2023-12-12 06:44:07 +00:00
composer.lock Update dependency psalm/phar to v5.19.1 2024-01-18 06:57:13 +00:00
psalm.xml i hate tabs 2023-06-24 18:12:17 +02:00
renovate.json not needed anymore on renovate 2023-06-25 17:54:27 +02:00

README.md

epubreader

Reader is an ebook reader based on pure javascript renderers. It works for publications formatted according to the following standards:

For Epub Reader uses the futurepress epub.js renderer to provide near-native looks, especially when used full-screen. Turn pages by pressing the left/right hand side of the screen/window or using the cursor keys (if you have those), use the sidebar to browse through chapters or bookmarks and add annotations.

PDF is handled by Mozilla's pdf.js renderer in combination with a custom reader app to enable side-by-side display, batch search and more. Controls are like those used in the Epub renderer with a few exceptions, e.g. night mode has not been implemented yet.

CBR and CBZ are supported using a custom renderer inspired by balaclark's work. As with Epub, books can be navigated using the keyboard as well as mouse or touch navigation. Reader generates a visual index of all pages, show in the sidebar (thumbnail generation can be disabled for low-memory and/or -speed devices). As CBx files are often of varying quality, a set of image enhancement filters are provided.

Features

Reader remembers the last-visited page in a book and returns to that page when the book is re-opened. As all settings are stored on the server these features are device-independent, ie. you can start reading on a mobile device, continue on a PC to finish the book on a tablet.

Text-based formats incl. PDF

  • seamless full-screen mode supported on browsers which allow full user-control, ie. not on Apple)
  • single- and double-page viewing mode
  • user-configurable font and colour settings
  • night mode, toggled by clicking the book title/author on top of the viewer or the night mode button (PDF)
  • full-text search with keyword highlighting
  • bookmarks (with automatic snippet generation)
  • annotations (not yet implemented for PDF)
  • keyboard and pointer/touch-based navigation

CBR/CBZ ('Comics')

  • seamless full-screen mode supported on browsers which allow full user-control, ie. not on Apple)
  • single- and double-page viewing mode
  • optional image enhancement filters
  • Left-to-right and right-to-left (manga) modes
  • visual index (thumbnail size user-configurable, can be disabled for low-memory or -cpu devices)
  • keyboard and pointer/touch-based navigation

PDF support is still somewhat rough around the edges, not all features have been implemented yet. There is a known cosmetical issue in that in spread mode the (invisible but selectable) text layer for the left page is offset from the left when opening a document. As soon as a page is turned this problem disappears.

Keyboard navigation

Reader supports both pointer/touch-based as well as keyboard-based navigation. Pointer/touch based is mostly self-explanatory,

key function
left, page-up move to previous page; move to next page in RTL(manga) mode
right, page-down, space move to next page; move to previous page in RTL (mange) mode
home move to first page
end move to last page
s toggle side bar
esc close sidebar
f toggle full screen
t toggle toolbar
l CBR: toggle layout
a EPUB: annotate
b EPUB: bookmark
r EPUB: reflow text when sidebar is open
d EPUB: toggle day (custom colour) mode
n EPUB: toggle night mode

Defaults and Preferences

Reader stores defaults - settings which are independent of fileId (ie. independent of the book currently open) - and preferences - fileId-dependent (ie. different for every book) - on the server. Defaults are not shared between renderers, ie. the CBR renderer does not share defaults with the EPUB or PDF renderer. Defaults and preferences are removed from the server when the associated book or user is deleted.

Annotations and Bookmarks

Reader supports annotations (notes linked to a given position in a book) and bookmarks (position markers with automatically generated text snippets). An automatically generated bookmark (called '__ CURSOR __', not visible in the bookmarks list) is used to keep track of the current reading position. Annotations and bookmark snippets can be edited or deleted in the sidebar.

Screenshots

Epub

Reader showing page spread in 'night mode' Reader showing page spread in 'night mode'
Epub single page, full screen on a small-screen device Epub single page, full screen
Day mode color selector Day mode color selector
Longing for that olde-time terminal feeling... Longing for that olde-time terminal feeling...
Full-text search Full-text search
Small screen device, maximize text area enabled Small screen device, maximize text area enabled
Search on small-screen device Search on small-screen device
As close to full-screen as you can get on iOS As close to full-screen as you can get on iOS
Android supports true fullscreen (as do most other systems) Android supports true fullscreen (as do most other systems)

PDF

Reader showing PDF Reference document in spread mode (pages side by side) Reader showing PDF Reference document in spread mode (pages side by side)
Search through a document, showing all results in the sidebar Search through a document, showing all results in the sidebar
Dropdown showing page format options - spread, single page, page width and zoom options Dropdown showing page format options - spread, single page, page width and zoom options
Reader showing PDF in spread mode, thumbnails in the sidebar Reader showing PDF in spread mode, thumbnails in the sidebar

CBR/CBZ

iOS approximation of full screen, CBR iOS approximation of full screen, CBR
The same book, now in landscape mode, switch to 2-page spread is automatic The same book, now in landscape mode, switch to 2-page spread is automatic
Sidebar open, showing index, landscape mode Sidebar open, showing index, landscape mode
Sidebar open, showing index, portrait mode Sidebar open, showing index, portrait mode
Image enhancement filters, desaturate (grayscale) active Image enhancement filters, desaturate (grayscale) active
full screen (apart from iOS restrictions), controls hidden full screen (apart from iOS restrictions), controls hidden
Same page, zoomed in Same page, zoomed in
Small-screen, low memory (Android) device showing full-page book cover Small-screen, low memory Android device showing full-page book cover
The same Android device showing a zoomed-in part of a page The same Android device showing a zoomed-in part of a page