2

我是 epub 的新手。我有许多不同的 epub 格式文件,我打算让这些文件在线可读。我对 epub 文件中的内容不太了解?有什么方法可以让我知道我的epub文件中有多少页?如果您有,我可以使用xml,或任何其他方式来完成。javascriptPHP

4

2 回答 2

3

EPUB 文件基本上是一个 ZIP 文件,其中包含:

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

EPUB 3 文件有两种形式(即风格):pre-paginatedreflowable,而 EPUB 2 文件只有reflowable.

pre-paginated(又名“固定布局”)意味着电子书基本上类似于 PDF,其中每个“页面”都有预先确定的大小,例如 800x600 像素,但每个页面都写为 XHTML 文件而不是二进制 blob。这种类型的再现用于插图和儿童书籍,其中图像的精确位置至关重要。

reflowable意味着没有预先确定的分页,因此文本“流动”以适应阅读设备的屏幕尺寸和用户的字体高度/边距/行间距选择。它基本上就像一个网站(= 一组网页),打包成一个 ZIP 文件。这是迄今为止最常见的 EPUB 风格。

因此,如果您有pre-paginatedEPUB,您可以通过简单地计算书脊中 XHTML 文件的数量来确定页面的数量,因为 XHTML 文件和页面之间必须存在一一对应的关系。

如果您有reflowableEPUB,则没有页面的内在概念。1024一些阅读应用程序通过计算文本中的字符数,然后将该数字除以某个常数(例如,字符/页)来计算“页数” 。但当然这只是一个粗略的估计,它不一定对应于显示文本所需的“屏幕”数量,这又取决于阅读应用程序和用户的印刷选择(字体大小、边距、线传播等)。其他一些阅读应用程序只显示一个百分比进度,使用到目前为止看到的文本的字符数除以文本中的字符总数来计算。

作为参考,完整的 EPUB 规范在这里:http: //idpf.org/epub

于 2016-11-12T09:46:21.267 回答
3

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

于 2016-11-11T08:59:53.557 回答