我成功地使用 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 中取出并放入网页中?我是否需要实际渲染每个“页面”才能获取图像?
我发现我可以得到这样的图像:
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);
});
}
}
...