如何在页面上将两列段保持在一起?

时间:2013-07-17 08:16:34

标签: pdf-generation xsl-fo apache-fop

我遇到了使用XSL-FO生成PDF的问题。

我有一个包含两列的文档,我想在一个页面上保留一个段落(可以在页面底部开始,如果有空格),没有任何分页符。 主要目的是将段落转移到下一页。我不能在段落之前使用声明的分页符,因为之前的内容是动态的。文本本身有一个必须保留的换行符(white-space-collapse = false),并且在它之后有一个跨越的行,使其显示在页面顶部的两列中。我已经尝试过的事情:

  • 在页面内保持在一起=始终在段落上但没有任何变化
  • keep-together =总是在段落上,一切都显示在一行中。在行内设置保持在一起= 0并且在列内保持在一起= 0,所有内容(8行文本)在第二页上进入右列,但在前一页上左侧有两行保留o_0
  • page-break-inside =避免在段落上,也杀掉了列中断

段落的基本xsl-fo代码,必须修改为保留在一页上:

<fo:block font-family="Font name" font-size="8.5pt" font-weight="normal" keep-with-next.within-column="always" line-height="10.5pt" orphans="5" text-align="left" widows="5">
<fo:block white-space-collapse="false">TEXT IN TWO COLUMNS</fo:block>

我可以更改每个块的属性,但只更改第一个块将是最佳解决方案。

提前致谢:]

2 个答案:

答案 0 :(得分:2)

keep-together.within-column="always"应该在不离开孤立行的情况下为您提供所需内容,并且它是一个继承属性,因此如果在祖先块上指定它,则无需在每个块上指定。但是,在您的代码段中,您指定了未继承的keep-with-next=

只有一些属性是继承的,而不是全部。查看我的XSL-FO书籍的第440/441页,在http://www.CraneSoftwrights.com/training/#pfux免费找到“试用和购买”版本(注意页码是A4版本;请参阅美国信函版本的第438/439页)。

答案 1 :(得分:1)

你试过

吗?
keep-with-previous.within-column="always"

首先检查前一列,然后根据该列进行安排。