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