Readium Mobile is a toolkit for ebooks, audiobooks and comics written in Swift & Kotlin.
This toolkit is a modular project, which follows the Readium Architecture.
R2Shared
– Shared Publication
models and utilitiesR2Streamer
– Publication parsers and local HTTP serverR2Navigator
– Plain UIViewController
classes rendering publicationsReadiumOPDS
– Parsers for OPDS catalog feedsReadiumLCP
– Service and models for Readium LCPA Test App demonstrates how to integrate the Readium Swift toolkit in your own reading app
Readium libraries are distributed with Swift Package Manager (recommended), Carthage and CocoaPods. It's also possible to clone the repository (or a fork) and depend on the libraries locally.
The Test App contains examples on how to use all these dependency managers.
From Xcode, open File > Add Packages and use Readium's GitHub repository for the package URL: https://github.com/readium/swift-toolkit.git
.
You are then free to add one or more Readium libraries to your application. They are designed to work independently.
If you're stuck, find more information at developer.apple.com.
Add the following to your Cartfile
:
github "readium/swift-toolkit" ~> 2.3.0
Then, follow the usual Carthage steps to add the Readium libraries to your project.
Note that Carthage will build all Readium modules and their dependencies, but you are free to add only the ones you are actually using. The Readium libraries are designed to work independently.
Refer to the following table to know which dependencies are required for each Readium library.
R2Shared |
R2Streamer |
R2Navigator |
ReadiumOPDS |
ReadiumLCP |
|
---|---|---|---|---|---|
R2Shared |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |
CryptoSwift |
:heavy_check_mark: | :heavy_check_mark: | |||
DifferenceKit |
:heavy_check_mark: | ||||
Fuzi |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
GCDWebServer |
:heavy_check_mark: | ||||
Minizip |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
SQLite.swift |
:heavy_check_mark: | ||||
SwiftSoup |
:heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
ZIPFoundation |
:heavy_check_mark: |
Add the following pod
statements to your Podfile
for the Readium libraries you want to use:
pod 'R2Shared', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/2.3.0/Support/CocoaPods/ReadiumShared.podspec'
pod 'R2Streamer', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/2.3.0/Support/CocoaPods/ReadiumStreamer.podspec'
pod 'R2Navigator', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/2.3.0/Support/CocoaPods/ReadiumNavigator.podspec'
pod 'ReadiumOPDS', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/2.3.0/Support/CocoaPods/ReadiumOPDS.podspec'
pod 'ReadiumLCP', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/2.3.0/Support/CocoaPods/ReadiumLCP.podspec'
# Required if you use R2Streamer.
pod 'GCDWebServer', podspec: 'https://raw.githubusercontent.com/readium/GCDWebServer/3.6.3/GCDWebServer.podspec'
Take a look at CocoaPods's documentation for more information.
You may prefer to use a local Git clone if you want to contribute to Readium, or if you are using your own fork.
First, add the repository as a Git submodule of your app repository, then checkout the desired branch or tag:
git submodule add https://github.com/readium/swift-toolkit.git
Next, drag and drop the whole swift-toolkit
folder into your project to import Readium as a Swift Package.
Finally, add the Readium libraries you want to use to your app target from the General tab, section Frameworks, Libraries, and Embedded Content.
Using the toolkit with Readium LCP requires additional dependencies, including the framework R2LCPClient.framework
provided by EDRLab. Contact EDRLab to request your private R2LCPClient.framework
and the setup instructions.
link |
Stars: 63 |
Last commit: 2 days ago |
Take a look at the migration guide
Locator
text ready for user display with locator.text.sanitized()
.Publication.conforms(to:)
API to identify the profile of a publication.conformsTo
RWPM metadata, to identify the profile of a Publication
.ViewerPreferences/Direction
metadata.HTTPClient.download()
API to download HTTP resources to a temporary location.HTTPRequest
and DefaultHTTPClient
take an optional userAgent
property to customize the user agent.NavigatorDelegate.navigator(_:didJumpTo:)
API is called every time the navigator jumps to an explicit location, which might break the linear reading progression.
Navigator.go(to:)
, but not when turning pages.Publication.format
is now deprecated in favor of the new Publication.conforms(to:)
API which is more accurate.
publication.format == .epub
with publication.conforms(to: .epub)
before opening a publication with the EPUBNavigatorViewController
.LCPService
now uses a provided HTTPClient
instance for all HTTP requests.Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics