直接在应用程序 Swift 中打开 Epub

问题描述 投票:0回答:3

我正在尝试直接在我的 iOS 应用程序中打开 ePub 文件。

问题是我需要用户保存一些笔记。

到目前为止我一直在使用:

https://github.com/FolioReader/FolioReaderKit

图书馆。

我可以在应用程序内打开 iBooks 吗?

使用

UIDocumentationController
不幸的是现在没有选项打开。

还有其他库可以做到这一点吗?

谢谢

ios iphone swift epub
3个回答
4
投票

首先,有一个已弃用的库,FolioReaderKit,它在呈现不同的 *.epub 文件方面做得非常出色。但是,它没有得到维护,并且正在使用 UIWebView,这将阻止应用程序使用它上传到 AppStore。

[更新] 上述存储库的多个分支 12 已迁移到 WebKit。我没有测试过它们,也没有测试过它们是如何工作的。

其次,我发现唯一可以为您提供完整 UI 解决方案的实际开箱即用的 iOS SDK 是 skyepubAdobe,它们部分要求付款。

但是浏览 cod、示例和教程我学到了很多......

在回避了很多之后,我得出以下结论:

  1. EPUB 基本上是一个包含在网站中的 zip 文件,通常包括一些带有一些图片、CSS 和字体的 index.html 文件。 什么是EPUB

  2. 要在 iOS 上本地提供 EPUB,您必须在本地解析解压缩它并提供其背后的主文件(我们再次讨论 html 文件的主要用例)。您可以使用不同的库,例如 EPUBKit

  3. 解析本地文件时您可能需要允许访问它们,这可能需要允许非 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>
    
  4. 您可能需要添加自定义 css 和 js 代码(在将用于加载 html 文件的 WKWebView 中进行评估)以适应您想要提供的 UI。 对我帮助很大的一个很好的例子是 Style.css 和 Bridge.js 文件及其在 FolioReaderKit

    中的用法

希望它对 EPUB 和 iOS 有所帮助


2
投票

目前 FolioReaderKit 不支持像 iBooks 这样的 Notes,尽管它已在我们的路线图上。你可以加入#16的讨论,界面已经设计好了,还有实现的讨论。

关于 iBooks,无法在您的应用程序中使用它。


2
投票

我不知道可以解决您的问题的库,但解决方案可能是

© www.soinside.com 2019 - 2024. All rights reserved.