【发布时间】:2020-04-30 16:53:15
【问题描述】:
我正在使用 EPUB.js 和 Vue 来呈现 Epub。我想显示几本 epub 书籍的封面图片,以便用户可以单击其中一本书来查看整本书。
没有关于如何执行此操作的文档,但有几种方法表明这应该是可能的。
首先,有 Book.coverUrl() 方法。
请注意,我在 Vue 模板中设置了一个等于 bookCoverSrc 的 img src 属性。设置this.bookCoverSrc 将自动更新img 标签的src 并显示图像(如果src 有效/解析)。
this.book = new Epub(this.epubUrl, {});
this.book.ready.then(() => {
this.book.coverUrl().then((url) => {
this.bookCoverSrc = url;
});
})
以上行不通。 url 是 undefined。
奇怪的是,book 上似乎有一个 cover 属性。所以,我试试:
this.book = new Epub(this.epubUrl, {});
this.book.ready.then(() => {
this.coverSrc = this.book.cover;
});
this.book.cover 解析为OEBPS/@public@vhost@g@gutenberg@html@files@49010@49010-h@images@cover.jpg,因此至少在本地将其设置为src 会导致对http://localhost:8080/OEBPS/@public@vhost@g@gutenberg@html@files@49010@49010-h@images@cover.jpg 的请求,该请求为200 秒,但不返回任何内容。可能是 webpack-dev-server 到 200 的怪癖,但是如果我通过 Chrome 开发工具中的源进行分页,我也看不到任何表明这样的 URL 应该解析的迹象。
所以,文档没有帮助。我用谷歌搜索发现这个github question from 2015. 他们的代码就像
$("#cover").attr("src", Book.store.urlCache[Book.cover]);
有趣的是,码头上没有关于 Book.store.urlCache 的内容。正如预期的那样,urlCache 是 undefined,尽管存在 book.store。我在那里看不到任何可以帮助我显示封面图像的东西。
使用 epub.js,如何显示 Epub 文件的封面图片? 请注意,仅渲染 Epub 文件的第一个“页面”(通常是封面图片)不会t 解决我的问题,因为我想列出几个 epub 文件的封面图片。
请注意,我相信我使用的 epub 文件确实有封面图片。文件是Aesop's Fables 和Irish Wonders。
编辑:我可能需要首先在book.cover 提供的网址上使用Book.load。我这样做并尝试对其进行控制台记录,但这是一个包含奇怪编码文本的大型博客,看起来像:
����
所以我认为这是一个直接的图像,我需要找到一种方法以某种方式将它放到 Document 上?
EDIT2:那个大斑点是类型:字符串,我不能atob() 或btoa() 它。
EDIT3:只需fetching this.book.cover 提供的 url 返回我的 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,看看会发生什么。
【问题讨论】:
标签: javascript html epub epub.js