计算epub中的总页数

Count total number of pages in epub

本文关键字:epub 计算      更新时间:2023-09-26

我是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-paginatedreflowable,而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文件是响应式电子书,根据屏幕大小改变页数。此外,页码取决于查看器应用程序&设备。