我是 epub 的新手。我有许多不同的 epub 格式文件,我打算让这些文件在线可读。我对 epub 文件中的内容不太了解?有什么方法可以让我知道我的epub
文件中有多少页?如果您有,我可以使用xml
,或任何其他方式来完成。javascript
PHP
2 回答
EPUB 文件基本上是一个 ZIP 文件,其中包含:
mimetype
便于文件类型检测的文件 (application/epub+zip
);META-INF/container.xml
描述 EPUB 文件中包含的不同类型出版物的文件。通常只有一个,但原则上您可以在同一个 EPUB 文件中拥有相同文本的 HTML 和 PDF 版本,阅读应用程序或用户可以决定查看哪一个;- OPF 文件(例如
file.opf
),它是一个清单文件,其中包含:- 元数据(标题、作者等)
- 容器内的资产列表(XHTML 文件、图像、字体、CSS 样式表等)
- 书脊,即出版物的默认阅读顺序
- 一个 TOC 文件(
XHTML
EPUB 3 中的NCX
文件,EPUB 2 中的文件),它描述了目录,通常通过阅读应用程序对其进行解析以显示“目录”面板/窗口。
EPUB 3 文件有两种形式(即风格):pre-paginated
或reflowable
,而 EPUB 2 文件只有reflowable
.
pre-paginated
(又名“固定布局”)意味着电子书基本上类似于 PDF,其中每个“页面”都有预先确定的大小,例如 800x600 像素,但每个页面都写为 XHTML 文件而不是二进制 blob。这种类型的再现用于插图和儿童书籍,其中图像的精确位置至关重要。
reflowable
意味着没有预先确定的分页,因此文本“流动”以适应阅读设备的屏幕尺寸和用户的字体高度/边距/行间距选择。它基本上就像一个网站(= 一组网页),打包成一个 ZIP 文件。这是迄今为止最常见的 EPUB 风格。
因此,如果您有pre-paginated
EPUB,您可以通过简单地计算书脊中 XHTML 文件的数量来确定页面的数量,因为 XHTML 文件和页面之间必须存在一一对应的关系。
如果您有reflowable
EPUB,则没有页面的内在概念。1024
一些阅读应用程序通过计算文本中的字符数,然后将该数字除以某个常数(例如,字符/页)来计算“页数” 。但当然这只是一个粗略的估计,它不一定对应于显示文本所需的“屏幕”数量,这又取决于阅读应用程序和用户的印刷选择(字体大小、边距、线传播等)。其他一些阅读应用程序只显示一个百分比进度,使用到目前为止看到的文本的字符数除以文本中的字符总数来计算。
作为参考,完整的 EPUB 规范在这里:http: //idpf.org/epub
Epub 文件是响应式电子书,可根据屏幕大小更改页数。页码也取决于查看器应用程序和设备。