我正在尝试直接在我的 iOS 应用程序中打开 ePub 文件。
问题是我需要用户保存一些笔记。
到目前为止我一直在使用:
https://github.com/FolioReader/FolioReaderKit
图书馆。
我可以在应用程序内打开 iBooks 吗?
使用
UIDocumentationController
不幸的是现在没有选项打开。
还有其他库可以做到这一点吗?
谢谢
首先,有一个已弃用的库,FolioReaderKit,它在呈现不同的 *.epub 文件方面做得非常出色。但是,它没有得到维护,并且正在使用 UIWebView,这将阻止应用程序使用它上传到 AppStore。
[更新] 上述存储库的多个分支 1、2 已迁移到 WebKit。我没有测试过它们,也没有测试过它们是如何工作的。
其次,我发现唯一可以为您提供完整 UI 解决方案的实际开箱即用的 iOS SDK 是 skyepub 和 Adobe,它们部分要求付款。
但是浏览 cod、示例和教程我学到了很多......
在回避了很多之后,我得出以下结论:
EPUB 基本上是一个包含在网站中的 zip 文件,通常包括一些带有一些图片、CSS 和字体的 index.html 文件。 什么是EPUB。
要在 iOS 上本地提供 EPUB,您必须在本地解析解压缩它并提供其背后的主文件(我们再次讨论 html 文件的主要用例)。您可以使用不同的库,例如 EPUBKit
解析本地文件时您可能需要允许访问它们,这可能需要允许非 tls 请求...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
<dict>
<key>NSAllowsArbitraryLoads</key> <true/>
<key>NSExceptionDomains</key> <dict>
<key>localhost</key> <dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key> <true/>
<key>NSExceptionMinimumTLSVersion</key> <string>TLSv1.2</string>
<key>NSExceptionRequiresForwardSecrecy</key> <true/>
<key>NSIncludesSubdomains</key> <true/>
<key>NSRequiresCertificateTransparency</key> <false/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> <true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key <string>TLSv1.2</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <true/>
</dict>
</dict>
</dict>
</plist>
您可能需要添加自定义 css 和 js 代码(在将用于加载 html 文件的 WKWebView 中进行评估)以适应您想要提供的 UI。 对我帮助很大的一个很好的例子是 Style.css 和 Bridge.js 文件及其在 FolioReaderKit
中的用法希望它对 EPUB 和 iOS 有所帮助
目前 FolioReaderKit 不支持像 iBooks 这样的 Notes,尽管它已在我们的路线图上。你可以加入#16的讨论,界面已经设计好了,还有实现的讨论。
关于 iBooks,无法在您的应用程序中使用它。
我不知道可以解决您的问题的库,但解决方案可能是
使用我的库https://github.com/f-meloni/epubExtractor或https://cocoapods.org/pods/KFEpubKit,解压epub
使用
UIWebView
渲染 ePub 章节使用marker.js库进行单词选择和突出显示https://developers.google.com/maps/documentation/javascript/markers
使用数据库保存注释和突出显示。