2016-04-05 22 views
0

我們正在開發epub閱讀器庫。 我們的用戶將能夠在任何設備(網頁瀏覽器,android sdk應用程序,ios應用程序等)上同步他們的閱讀(通過服務器api)。 而且我們應該支持用戶筆記,報價,閱讀位置,書籤的同步。我們也支持文​​本大小的改變。我們使用CSS列進行書頁分頁。在epub(html)閱讀器應用(android sdk,ios,web等)中序列化用戶元素的最佳方式是什麼

現在爲了序列化,我們嘗試使用timdown/rangy庫(TextRange模塊):https://github.com/timdown/rangy/wiki/Text-Range-Module來確定相對於書本章節(html body)的文本位置。

但我們注意到:

  • JS功能,如selectCharacters(節點containerNode,數了startIndex,數endIndex的)的作品非常緩慢後
  • 文本的位置偏移文字大小改變

我們考慮使用相同的rangy函數,但相對於最近的dom元素(p)。但在這種情況下,我們必須每次在所有客戶端的通用方式中識別dom元素。

什麼是序列化的最佳方式 - 反序列化我們的情況下的用戶元素?

當然,這是我們的工作,所以我們的問題,但我們將非常感謝您的任何建議!

回答

0

唯一的「IDPF祝福」的方式來跟蹤當前的閱讀位置在於存儲當前視口中第一個可見元素的EPUB CFI(請參閱http://www.idpf.org/epub/linking/cfi/epub-cfi.html)。

類似的高光,註釋,書籤。

請注意,如果您在將其傳遞給渲染器(比如WebView)之前操作原始EPUB資產的DOM(例如XHTML文件),那麼您應該跟蹤原始DOM和修改的DOM之間的映射,以便始終如一地應用CFI。

Readium JS項目有一個Javascript模塊用於處理您可能會覺得有用的CFIs:https://github.com/readium/readium-cfi-js

相關問題