1

我正在 IOS 上创建一个 ePub 阅读器。基本上,我使用 uiwebview 来加载 xhtml 文件。每次翻页,我需要用uiwebview加载文件然后调用javascript滚动到右边的偏移量。这是一个问题,一些 xhtml 文件很大(例如 > 2MB),加载时间太长。因此翻页动画不是那么流畅。所以我想我可以用 uiwebviewA 加载一次 xhtml,每次翻页时,我都会创建另一个 uiwebviewB 并从 uiwebviewA 获取所需的 html 内容(如第二页)。这样,我可以将 html 限制为小尺寸,并且翻页动画应该是流畅的。我的问题是是否有任何开源 javascript 库可以完成这项工作?任何意见表示赞赏!

4

2 回答 2

1

没有任何有意义的、定义明确的方法可以按照您描述的方式拆分 HTML 文档。您混淆了两件非常不同的事情:(1)将渲染拆分为页面大小的块,以及(2)拆分 HTML 源代码。换句话说,我可以想象没有一种算法可以将 HTML 文件拆分为多个片段,从而使渲染片段的顺序组合与原始 HTML 文件的渲染相同。换句话说,为了弄清楚如何拆分 HTML,假设它甚至是可能的,您必须完成渲染页面所涉及的大部分或全部工作,这将破坏整个目的。

您应该放弃拆分 HTML 的想法。电子书阅读器基本上都是通过一次渲染整个 HTML 文档来进行分页的,然后“加窗”、“剪辑”和“偏移”,或者在某些情况下,使用 CSS 区域。

如果我了解您要做什么,我可以想到几种选择。

  1. 通过在工作流程的早期预拆分它们来减小输入 HTML 文件的大小。例如,在我知道的一个项目中,源 (X)HTML 文件有一些额外的标记,可以告诉预处理器在需要时将它们拆分为单独的文件,在这种情况下,这对于不使用的电子书阅读器来说是一种解决方法'不正确地尊重 CSSpage-break-*属性。

  2. 将下一页的渲染预计算为图形并将其用于翻页。

  3. 如前所述,重新考虑为书中的每一页重新加载整个 HTML 文档的架构。如果仅仅是翻页效果导致您想要这样做,那么就放弃它们。

  4. 考虑到许多电子书阅读器提供不需要分页的滚动模式,而有些(例如 Himawari Reader)提供 滚动模式,这实际上是一些读者喜欢的东西。您可以推出滚动版本,然后在版本 2 中进行分页。

于 2013-01-26T02:38:33.500 回答
0

你真的应该检查一下:

http://cubiq.org/swipeview

这个演示完全符合您的要求:

http://cubiq.org/dropbox/SwipeView/demo/ereader/

它需要一个文本(书)并将文本分页以适合屏幕大小。

我在 Android 和 iOS 中测试了演示,效果很好!!

于 2013-06-03T07:53:17.087 回答