问题 如何在epub阅读器中实现“分页符”


知道如何在epub阅读器中实现“分页符”吗? .epub只是HTML页面,epub阅读器呈现这些html页面。 但我想知道像Adobe Digital Edition这样的一些epub读者是如何实现分页的。 在那里,当我们跳转到任何页面时,你将找不到一半显示的行(即只有字母的上半部分可见,下半部分将在下一页)或下一页中另一部分的半图像。 如果我无法在当前页面中完全显示该行,如何将该行推送到下一页?


11579
2018-05-11 07:01


起源



答案:


EPUB并没有真正的页面概念 - 它意味着流动的可回流内容适合显示容器的尺寸。所以你的建议是有点黑客。

也就是说,用户对页面感到满意,大多数读者都实现了页面的一些概念。

你需要的是实现类似Knuth的分页算法,而这又取决于他的段落和换行算法。请参阅他的TeX书中的完整文字代码(IIRC,它在Pascal中)。 (这不是一段复杂的代码 - 我在多年前写过的桌面出版程序中实现了一个代码)。

如果你走这条路线,就意味着你可能无法使用UIWebView。

顺便说一句,Adobe Digital Edition实现了Knuth算法的变体。


1
2018-06-13 01:00



-1因为epubs肯定想要在章节之前分页等。如何做到:使用css规则,例如div.chapter {page-break-after:always;} - Larry K
如果css3是一个选项:列族(阅读W3C规范中的精细打印,你将看到如何创建固定的高度/宽度列大小)工作奇迹,只需要一个容器div其余的是基于“门户”的数学size(在Java中执行此操作目前用于webview) - Dan
您是否有Adobe Digital Edition使用Knuth算法的参考?我知道InDesign而不是这个。 - Jill-Jênn Vie


答案:


EPUB并没有真正的页面概念 - 它意味着流动的可回流内容适合显示容器的尺寸。所以你的建议是有点黑客。

也就是说,用户对页面感到满意,大多数读者都实现了页面的一些概念。

你需要的是实现类似Knuth的分页算法,而这又取决于他的段落和换行算法。请参阅他的TeX书中的完整文字代码(IIRC,它在Pascal中)。 (这不是一段复杂的代码 - 我在多年前写过的桌面出版程序中实现了一个代码)。

如果你走这条路线,就意味着你可能无法使用UIWebView。

顺便说一句,Adobe Digital Edition实现了Knuth算法的变体。


1
2018-06-13 01:00



-1因为epubs肯定想要在章节之前分页等。如何做到:使用css规则,例如div.chapter {page-break-after:always;} - Larry K
如果css3是一个选项:列族(阅读W3C规范中的精细打印,你将看到如何创建固定的高度/宽度列大小)工作奇迹,只需要一个容器div其余的是基于“门户”的数学size(在Java中执行此操作目前用于webview) - Dan
您是否有Adobe Digital Edition使用Knuth算法的参考?我知道InDesign而不是这个。 - Jill-Jênn Vie


在底层的html中,你可以这样做:

<span style="page-break-after: always" />

9
2017-10-19 08:41



我使用这种css样式来创建分页符。适用于Stanza读卡器(iPhone)和Kindle(转换为Kindle格式后) - Larry K


如果没有确定的答案,您可以:

  • 找到关于epub的综合信息来源就是这个 IBM文章
  • 尝试用epub创建一些实验 口径 和它的 手册

0
2018-05-11 11:27