如何在纯 HTML5/CSS/Jquery 中显示 epub 格式的书籍 [已关闭]

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

是否可以使用纯 HTML5、CSS 和 Jquery 在网络浏览器中显示 epub 格式的书籍?有人可以建议我该怎么做吗?我还必须使其响应式才能使其在 iPad 上运行。我知道,但我不知道如何使用 HTML 和 Javascript 阅读 epub。

epub 可能包含一些数学函数,我也需要正确显示它们。

javascript jquery html css epub
3个回答
24
投票

现在我们有了 Readium API,请参阅 https://readium.org/

是否可以使用纯 HTML5、CSS 和 jQuery 在网络浏览器中显示 epub 格式的书籍?

是的,这是可能的。

为什么要写一个epub阅读器?那里已经有很多了。

无论如何,您的问题是通用问题的特定形式,是否可以为 epub 编写一个电子书阅读器?显然,是的,可能已经写好了。如果您可以用一种语言或为一种平台编写它,您也可以用另一种语言或为另一种平台编写它。

但实际上,您甚至不需要编写阅读器,因为 epub 只是罐装的小网站。将 epub 文件解压缩到服务器上的某个位置,然后将浏览器导航到其中一个页面。瞧,你正在读书。您想要目录吗?导航到 toc.xhtml 或等效文件即可。

从一页移动到下一页怎么样?您需要知道页面应该以什么顺序显示。编写一个小型服务器组件,该组件解析通常称为 content.opf 的文件,并根据清单元素中文件的顺序发出一些 HTML,其中包含前进和后退按钮以及用于显示内容的 iframe。当你在做的时候,解析出标题和其他有趣的元数据。所有这些本质上都是 epubjs 所做的。

但从你的问题中我直觉知道你想完全在客户端/浏览器端执行此操作。好吧,这也已经以 Readium 的形式完成了,您应该看看。使用您最喜欢的 JS 解压缩库(警告,可能会很慢)来解压缩 epub 文件,并编写一些 JS 来解析元数据并抛出页面,同样最有可能在带有一些镶边的 iframe 中。

但是,如果您想要分页输出(人们对电子书阅读器的期望),该怎么办?这就是事情开始变得棘手的地方,并且可能是一个退后一步并再次问自己为什么要这样做的好地方。无论如何,如果您决定确实想要分页显示,那么您将需要找出涉及窗口、框架、剪辑、偏移和/或使用“区域”的逻辑组合来帮助您。一些电子书读者只是在这里下注,并说,滚动/未分页的输出到底有什么问题?

但是电子书阅读器还可以做很多其他事情。例如,大多数都允许您更改行距、边距或字体大小。这些用户设置如何与书籍 CSS 文件中的样式交互?一些读者采用解析 CSS 的方法(也有相应的库)并重写它以获得您或您的用户想要的结果。

更喜欢应用程序而不是浏览器应用程序?将整个 shebang 包裹在 PhoneGap 中。

要成为一名合格的读者,你将不得不担心很多很多其他事情。就在我的脑海中,这包括显示一些书籍指定的“指南”或“地标”,记住阅读位置和会话之间的用户选项,并且可能提供某种书架功能。

虽然一些客户端电子书阅读器确实使用 jQuery,但请记住,由于 epub 是 HTML5/CSS2.5/JS,内容本身只能由现代浏览器可靠地显示。但如果你有一个现代的浏览器,你就不需要 jQuery 中 90% 的头发了,它是为跨浏览器兼容性而设计的。您最好使用更轻量级的组件,例如 Backbone 和/或 Underscore。您可能甚至不需要选择器库,因为您将拥有 querySelector。

祝你好运!


4
投票

对于科学论文(期刊文章),有一个“最佳解决方案”来在浏览器上模拟 EPUB 阅读器。它可以使用 XML (JATS) 或 XHTML(来自 EPUB)内容。 PubReader 使用 HTML5 和 CSS3 中提供的特性和功能。

使用CSS和Javascript实现格式化、分页、导航和文本重排。 整篇文章作为单个 HTML 页面加载到浏览器中,并在本地处理分页等。 参见:

PS:PubReader 类似于@torazaburo 建议,EPUB-Readium 浏览器界面


0
投票

是的,已经完成了。我列出了我找到的几个。

HTML 阅读器并作为 html 文件工作:

渲染 epub 的库:

© www.soinside.com 2019 - 2024. All rights reserved.