swift-toolkit
swift-toolkit copied to clipboard
Empty Table of Contents List for PDF LCP
Bug Report
What happened?
We tried to open PDF (LCP) file both in our App(with Swift-toolkit integration) and Test app. We were able to successfully open it. However, we experienced an empty Table of Contents for pdf files.
mediaType : application/pdf+lcp Extension: lcpdf Sample PDF LCP https://tuxedo-preprod-icdp.yondu.net/api/ebook/mobile/lcp/get-book-lcp/be7ec450-4617-4b53-bc92-d910951636ea/293 [passphrase: 293]
We tried to view the PDF with LCP in other Ebook Reader like Thorium and it can fetch the publication's table contents. However in the Test app and our app, we can't retrieve it. Hope you can assist us on how to fetch it thanks!
Expected behavior
We expected to view the table of contents list like the one we are using on .epub files.
How to reproduce?
Using Test App:
- Press the "+" button on the right navigation bar and select From a URL.
- Enter https://tuxedo-preprod-icdp.yondu.net/api/ebook/mobile/lcp/get-book-lcp/be7ec450-4617-4b53-bc92-d910951636ea/293
- Enter 293 as passphrase.
- Open Book
- View Table of Contents (from the Option Hamburger menu).
Result on Test App:

Logs upon Opening PDF
vs
Logs on .epub Files
Environment
- Readium version: Using Swift Package Manager: { "identity" : "swift-toolkit", "kind" : "remoteSourceControl", "location" : "https://github.com/readium/swift-toolkit.git", "state" : { "branch" : "main", "revision" : "2e0c647221612f923f9888851c848c88d14f7679" } }
Development environment
Testing device
- iOS version: 15.5
- Model (e.g. iPhone 11 Pro Max): iPhone 13 Pro Max
- Is it an emulator? Yes
Tried it also on actual device. Problem also occurs.
Additional context
- Are you willing to fix the problem and contribute a pull request? No
This is not supported right now, only the metadata taken from the manifest.json file inside the lcpdf are used.
We might implement a fallback on the LCP encrypted PDF in specific cases (blank manifest and only one PDF resource). This was not done because it required to open the PDF twice, in the Streamer and then in the Navigator. Now it should be easier to implement it with the CacheService.
I don't know if and when this will be implemented, as it's not a priority for the core maintainers right now. So unless a contributor step up, it might take a while.