epubjs 并让法师出去

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

我成功地使用 epubjs 阅读了 epub

let book = ePub('epub/' + file);

但随后我尝试循环遍历文件并使用

提取文本和图像
book.loaded.spine.then(spine => {
  spine.each((item, ind) => {
    item.load(book.load.bind(book)).then(contents => {
      // console.log(contents.innerText)
      // console.log(contents);

      let body = contents.lastElementChild,
          hasimg = body.querySelector('img'); 
        
      if (hasimg) {
        let img = new Image();
        img.src = hasimg.src;  //--------> returns a 404
        document.body.append(img);
      }
    });
  });
});

文字很容易获得,但我似乎无法获得任何图像。 “hasimg”具有适当的图像来源,但我不知道为什么当我尝试获取它时它不存在。

如何将图像从 epub 中取出并放入网页中?我是否需要实际渲染每个“页面”才能获取图像?

javascript image epub.js
1个回答
0
投票

我发现我可以得到这样的图像:

book.loaded.spine.then(spine => {
  const zip = book.archive.zip.files;
  const re = ['jpg', 'jpeg', 'png', 'gif', 'svg', 'bmp', 'tiff'];

  // get all images
  for (const prop in zip) {
    // get the file extension
    let sfx = zip[prop].name.toLowerCase().split('.').pop();

    if (re.indexOf(sfx) != -1) {
      zip[prop].async('blob').then(blob => {
        // blob is the image source, then for testing  
        // purposes I added it to the page
        let img = new Image();
        img.src = URL.createObjectURL(blob);
        document.body.append(img); 
      });
    }
  }
  ...
© www.soinside.com 2019 - 2024. All rights reserved.