【问题标题】:how to implement 'page break' in epub reader如何在 epub 阅读器中实现“分页符”
【发布时间】:2010-05-11 07:01:35
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

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

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

    【讨论】:

    • 我使用这种 css 样式来创建分页符。在 Stanza 阅读器 (iPhone) 和 Kindle 中运行良好(转换为 Kindle 格式后)
    【解决方案2】:

    EPUB 并没有真正的页面概念——它适用于可重排的内容,这些内容可以流动以适应显示容器的尺寸。所以你的建议有点像黑客。

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

    您需要实现类似 Knuth 的分页算法(这又取决于他的段落)和换行算法。有关完整的文字代码,请参阅他的 TeX 书(IIRC,它在 Pascal 中)。 (一段代码并没有那么复杂——我在多年前编写的桌面出版程序中实现了一个)。

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

    顺便说一句,Adobe 数字版实现了 Knuth 算法的变体。

    【讨论】:

    • -1 因为 epubs 肯定希望在章节之前分页,等等。如何做到这一点:使用 css 规则,例如 div.chapter {page-break-after: always;}
    • 如果 css3 是一个选项:列族(阅读 W3C 规范中的细则,您将了解如何创建固定高度/宽度的列大小)可以创造奇迹,并且只需要一个容器 div rest 是基于“门户”大小的数学运算(目前在 Java 中这样做是为了在 web 视图中使用)
    • 您有 Adob​​e Digital Edition 使用 Knuth 算法的参考吗?我知道 InDesign,但不是这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多