2

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

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

  • keep-together-within-page=始终在段落上,但没有任何变化
  • keep-together=always 在段落上,所有内容都显示在一行中。设置 keep-together-within-line=0 和 keep-together-within-column=0,所有内容(8 行文本)进入第二页的右列,但两行留在上一页的左侧 o_0
  • page-break-inside=avoid 在段落上,也会杀死分栏符

必须修改以保留在一页上的段落的基本 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>

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

提前致谢 :]

4

2 回答 2

2

keep-together.within-column="always"应该给你你需要的东西而不留下孤立的行,它是一个继承的属性,因此如果它是在祖先块上指定的,则不需要在每个块上指定。但是,在您的代码片段中,您已指定keep-with-next=哪个不是继承的。

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

于 2013-07-17T14:49:37.020 回答
1

你试过吗

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

它将首先检查上一列,然后根据该列进行排列。

于 2015-10-23T06:47:35.180 回答