Javascript 如何使用epub.js在HTML中显示epub书籍的封面?
我正在使用和Vue渲染Epub。我想显示几本epub书籍的封面图像,以便用户可以单击其中一本,然后查看整本书 没有关于如何做到这一点的文档,但是有几种方法表明这是可能的 首先是Book.coverUrl()方法 请注意,我正在Vue模板中将Javascript 如何使用epub.js在HTML中显示epub书籍的封面?,javascript,html,epub,epub.js,Javascript,Html,Epub,Epub.js,我正在使用和Vue渲染Epub。我想显示几本epub书籍的封面图像,以便用户可以单击其中一本,然后查看整本书 没有关于如何做到这一点的文档,但是有几种方法表明这是可能的 首先是Book.coverUrl()方法 请注意,我正在Vue模板中将imgsrc属性设置为等于bookCoverSrc。设置this.bookCoverSrc将自动更新img标签的src,并显示图像(如果src有效/解析) 上述方法不起作用url是未定义的 奇怪的是,在书上直接出现了一个封面属性。因此,我尝试: this.bo
img
src
属性设置为等于bookCoverSrc
。设置this.bookCoverSrc
将自动更新img
标签的src
,并显示图像(如果src
有效/解析)
上述方法不起作用<代码>url是未定义的
奇怪的是,在书
上直接出现了一个封面
属性。因此,我尝试:
this.book = new Epub(this.epubUrl, {});
this.book.ready.then(() => {
this.coverSrc = this.book.cover;
});
本书封面
解析为OEBPS/@public@vhost@g@gutenberg@html@files@49010@49010-h@images@jpg
,所以当我将其设置为src
时,至少在本地会导致请求http://localhost:8080/OEBPS/@public@vhost@g@gutenberg@html@files@49010@49010-h@images@封面.jpg
,它将运行200s,但不返回任何内容。这可能是webpack dev server在这方面的一个怪癖,但如果我翻阅Chrome dev工具中的源代码,我也看不到任何迹象表明应该解析这样的URL
所以,医生帮不上忙。我在谷歌上搜索发现他们的代码是这样的
$("#cover").attr("src", Book.store.urlCache[Book.cover]);
有趣的是,码头上没有关于Book.store.urlCache的信息。正如所料,urlCache
是未定义的
,尽管book.store
存在。我没有看到任何可以帮助我显示封面图片的东西
使用epub.js,如何显示epub文件的封面图像?请注意,简单地呈现epub文件的第一个“页面”(通常是封面图像)并不能解决我的问题,因为我想列出几个epub文件的封面图像
还要注意,我相信我使用的epub文件确实有封面图像。文件是和
编辑:我可能需要在book.cover提供的url上使用。我这样做了,并尝试console.log它,但它是一个由奇怪编码的文本组成的大型博客,看起来像:
����
所以我认为这是一个直接的图像,我需要找到一种方法,以某种方式将其放到文档中
EDIT2:那个大的blobby blob是type:string,我不能atob()
或btoa()
它
EDIT3:Justfetch
ing由this.book.cover提供的url
返回my index.html,这是webpack dev server在不知道其他操作时的默认行为
EDIT4:下面是epub.js中的book.coverUrl
的代码
key: "coverUrl",
value: function coverUrl() {
var _this9 = this;
var retrieved = this.loaded.cover.then(function (url) {
if (_this9.archived) {
// return this.archive.createUrl(this.cover);
return _this9.resources.get(_this9.cover);
} else {
return _this9.cover;
}
});
return retrieved;
}
如果我使用this.archive.createUrl(this.cover)
而不是this.resources.get
,我实际上会得到一个功能URL,看起来像blob:http://localhost:8080/9a3447b7-5cc8-4cfd-8608-d963910cb5f5
。我将尝试将其输入到src
中,看看会发生什么 发生这种情况的原因是源代码库epub.js中注释掉了coverUrl
函数中正常工作的代码行,而编写了一行不正常工作的代码
因此,我不得不复制整个库,取消注释好代码,删除坏代码。现在,该函数正常工作
为此,请克隆整个项目。将该项目的package.json
中的依赖项复制到您自己的。然后,将src
、lib
和libs
文件夹复制到项目中的某个位置。找到一种方法来禁用放置这些文件夹的位置的eslint
,因为项目使用TAB
字符作为间距,这导致我的终端由于eslint爆炸而挂起
npm安装
这样,您的node\u模块中就有了和epub.js
依赖项
打开book.js
。取消注释第661行,如下所示
return this.archive.createUrl(this.cover);
// return this.resources.get(this.cover);
并注释掉第662行
return this.archive.createUrl(this.cover);
// return this.resources.get(this.cover);
现在,您可以通过将img
标记的src
属性设置为book.coverUrl()
返回的URL来显示图像