如何在 WKWebView 中加载 ePub?

How to load ePub in WKWebView?

我有一个 WKWebView 子类,它能够显示像 Google 这样的网页。遗憾的是,它不会在本地文件系统中显示具有有效文件 URL 的 ePub 文件。没有返回错误。

可能我需要对 ePub 文件进行某种操作才能通过 WKWebView 打开它?

这是我正在做的事情:

[self.webView loadRequest:[NSURLRequest requestWithURL:fileURL]];

UIWebView 执行相同的操作我能够打开我的任何 ePub 文件。但我不能使用 UIWebView,因为它已被弃用并且将被删除。

已解决。正确做法:

[self.webView loadFileURL:URL.filePathURL allowingReadAccessToURL:URL.filePathURL];

或者:

NSString *htmlString = [NSString stringWithContentsOfFile:URL.filePathURL.path encoding:NSUTF8StringEncoding error:nil];

[self.webView loadHTMLString:htmlString baseURL:nil];

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

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

但是环顾 cod、示例和教程我学到了很多东西...

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

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

  2. 要在 iOS 上本地提供 EPUB,您必须在本地解析解压缩它并提供其背后的主文件(我们再次讨论 [=49 的主要用例) =] 文件)。您可以使用不同的库,例如 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

有所启发