从epubjs-rn从CFI位置抓取文本

时间:2018-08-22 23:50:26

标签: react-native react-native-android react-native-ios epub.js

我目前正在从事一个需要从epub抓取文本的项目。

我们正在使用 React-Native Futurepress epubjs-rn

试图实现:

  1. 用户通过longPress在移动设备上突出显示单词
  2. 突出显示的文本从突出显示的区域中获取,并在应用程序中的其他位置使用。

当前尝试:

我尝试过ReadLine()道具,该道具返回一个包含所选区域CFI位置的事件,但是我不知道如何从解析的CFI位置提取实际文本。

在epubjs-rn Github上,推荐onSelected处理类似问题,但无法触发。

这是我当前的代码:

onMarkClicked

任何帮助将不胜感激。谢谢〜

1 个答案:

答案 0 :(得分:0)

您可以使用此代码获取所选文本

    onSelected={(cfiRange, rendition) => {
      console.log("selected", cfiRange)
      this.state.book.getRange(cfiRange).then(function(range) {
        console.log(`Text: ${range.endContainer.data.substring(range.startOffset, range.endOffset)}`);
      });
    }}

对于书籍state,也请在此代码中进行设置:

  onReady={(book) => {
                        console.log("Metadata", book.package.metadata);
                        console.log("Table of Contents", book.navigation.toc);
                        this.setState({
                            onChangeFirstCall: true,
                            title: book.package.metadata.title,
                            toc: book.navigation.toc,
                            book: book
                        });