All notable changes to this project will be documented in this file.
Warning: Features marked as alpha may change or be removed in a future release without notice. Use with caution.
- Support for Swift Package Manager (contributed by @stevenzeck).
- EPUB publications implement a
SearchService
to search through the content.
- The default EPUB positions service now uses the archive entry length when available. This is similar to how Adobe RMSDK generates page numbers.
- To use the former strategy, create the
Streamer
with:Streamer(parsers: [EPUBParser(reflowablePositionsStrategy: .originalLength(pageLength: 1024))])
- To use the former strategy, create the
- #208 Crash when reading obfuscated EPUB resources with an empty publication identifier.
- All APIs deprecated in previous versions are now unavailable.
Streamer
takes a new optionalHTTPClient
dependency to handle HTTP requests.
- The HTTP server now requests that publication resources are not cached by browsers.
- Caching poses a security risk for protected publications.
Streamer
is now expecting aPublicationAsset
instead of aFile
. You can create custom implementations ofPublicationAsset
to open a publication from different medium, such as a file, a remote URL, in-memory bytes, etc.FileAsset
can be used to replaceFile
and provides the same behavior.
- Streamer API offers a simple interface to parse a publication and replace standalone parsers.
- A generic
ImageParser
for bitmap-based archives (CBZ or exploded directories) and single image files. - A generic
AudioParser
for audio-based archives (Zipped Audio Book or exploded directories) and single audio files.
Container
andContentFilters
were replaced by a shared implementation of aFetcher
.PDFFileParser
was replaced in favor of a sharedPDFDocument
protocol. This version ships with two implementations using PDFKit and CoreGraphics.
- Deobfuscating ranges of EPUB resources.
ReadiumWebPubParser
to parse all Readium Web Publication profiles, including Audiobooks and LCP for PDF. It parses both manifests and packages.
- Significant performance improvement when opening PDF documents protected with LCP.
- Prevent the embedded HTTP server from stopping when the device is locked, to allow background playback of audiobooks.