使用epub.js跳转到内容页面

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

用户可以上传一个 epub 文件,在用户提供一些选项(例如是否希望它连续呈现)后,我将使用 epub.js 打开并显示该文件。与网页中的 epub 一起,我提供了一些按钮,允许用户通过 epub 执行页面前进和后退等操作。

我想知道如何有一个按钮可以更改 epub 内容页面的位置。搜索告诉我可以使用

跳转到页面

book.goto(some_cfi)

rendition.display(some_cfi)

但我不确定 cfi 是什么,也不知道 epub.js 是否有任何方法可以知道内容页面的 cfi(如果它存在),我目前也无法让它执行任何操作。

如何使用 epub.js 创建一个跳转到 epub 文件显示内容页面的按钮?

javascript epub
1个回答
0
投票

CFI 是一种圆锥形片段标识符 - 总结:它是一种用于识别 Epub 中内容的标准化方法。您可以在这里了解有关它们的更多信息:https://idpf.org/epub/linking/cfi/epub-cfi.html

要回答您的问题,是的,您可以使用

rendition.display(cfi)
方法导航到 Epub 的特定页面。唯一的问题是您需要 Epub.js 来处理整本书在
book.ready.then()
中的位置。这个特定事件 在 Epub.js 中没有很好地记录,但一旦下载并解析了这本书,它就会被触发。查看 Epub.js 中第 73 行的 locations 示例文件: book.ready.then(function(){ // Load in stored locations from json or local storage var key = book.key()+'-locations'; var stored = localStorage.getItem(key); if (stored) { return book.locations.load(stored); } else { // Or generate the locations on the fly // Can pass an option number of chars to break sections by // default is 150 chars return book.locations.generate(1600); } })

book.locations.generate()

方法将生成您可以认为是“页面”列表的

epubCFIRanges
它将是一个字符串数组
)。传递给generate方法的值告诉Epub.js应该有多少个字符等于1页,但它默认为150,因此像示例中那样为此计算提供一个值可能是明智的。 解析 CFI 位置并将其存储在内存或

localStorage

或您选择的任何内容后,您可以获取任何 epubCFILocation 字符串并将其传递给

rendition.display(cfi)
方法,epub 应显示适当的内容。
为了使其按设计工作,您需要下载整本书并由 Epub.js 解析。如果整本书都已解析,则 

generate

方法将正常工作。

我希望这有帮助。

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