计算epub中的页面总数

问题描述:

我是epub新手。我有许多不同的epub格式文件,我将在线阅读这个文件。 我对epub文件中的内容没有多少了解? 有什么办法可以让我知道我的epub文件中有多少页? 我可以使用xmljavascript,PHP或任何其他方式,如果你有。计算epub中的页面总数

Epub文件是响应式电子书,它根据屏幕大小更改页数。 此外,页码取决于查看器应用程序&设备。

ePub文件基本上是一个ZIP文件,它包含:

  • 一个mimetype文件,便于文件类型检测(application/epub+zip);
  • a META-INF/container.xml文件描述EPUB文件中包含的不同类型的出版物。通常只有一个,但原则上可以有例如相同EPUB文件中的相同文本的HTML和PDF版本,以及阅读应用或用户可以决定要查看哪一个;
  • 的OPF文件(例如file.opf),其为含有一个清单文件:
    • 元数据(标题,作者等等)
    • 容器内部资产(XHTML文件,图像,字体列表, CSS样式表,等)
    • 脊柱,即,出版物
  • 一个TOC文件(文件XHTML在EPUB 3,一个NCX文件中EPUB 2),默认的读取顺序,它描述了目录a nd通常通过阅读应用程序来显示“目录”面板/窗口进行分析。

EPUB 3个文件有两种引渡(即,矫味剂):pre-paginatedreflowable,而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

+0

我忘了:在EPUB 3规范有一种方法('pageMap')来指定数字版和纸之间版地图,以便人们可以知道文本中的某个位置在纸版中的第X页。这是一个在教育电子书以外很少使用的功能,因为很少有阅读应用程序能够使用这些数据,并且插入EPUB相对昂贵。 –