整个表右浮 - XSL-FO

时间:2013-07-29 14:43:22

标签: xsl-fo apache-fop alignment

在XSL-FO中,将纯文本对齐到文档的右侧很容易。但是,将整个表格与文档的右侧对齐证明是非常困难的。

我希望做的是这样的事情:

fo:table align=left

{Table content}

/fo:table

而且我知道有一个<fo:float>对象,但它似乎没有按照我想要的方式工作,或者如果有的话,对它的工作方式的解释在每个方面措辞都很差我已经找到了。

简而言之:如何在XSL-FO中将表浮动到左侧?

编辑:我已经弄清楚为什么Float不起作用了。显然,我们的Apache FOP版本不支持它。任何已知的替代品?

2 个答案:

答案 0 :(得分:3)

术语“浮动”在XSL-FO中具有特定含义。如果你想把表从垂直流中取出来,把它放在页面的起始端,让剩下的流继续在表的末端,那么<float float="start"><table>...</table></float>就是这样在XSL-FO中完成。

你的问题的标题和文字谈到浮动到“正确”,所以我假设你的意思是浮动到页面的末尾。那当然是<float float="end">

如果您不想将表格从流程中取出,而是希望简单地流动表格并将表格对齐页面的末尾,那么可以通过使用{{在XSL-FO中完成1}}然后不使用标题。但并非所有商用XSL-FO引擎都支持这方面的规范。

我无法就FOP向您提供建议,因为它不是我用于任何客户的工具。

答案 1 :(得分:0)

经过一些实验,我提出了一个解决方案。它至少可以说是不优雅的,但它确实有效。这将生成一个右侧调整7厘米,3厘米列和5厘米列的表格,但它会阻止用户在表格左侧写入任何内容,除非非常仔细地格式化为空白的7厘米列。

fo:table width="15cm"
fo:table-column column-width="7cm"/
fo:table-column column-width="3cm"/
fo:table-column column-width="5cm"/
fo:table-row
fo:table-cell border="none"
[Intentionally left blank]
/fo:table-cell
fo:table-cell border="solid"
[Content of 3cm column]
/fo:table-cell
fo:table-cell border="solid"
[Content of 5cm column]
/fo:table-cell
/fo:table-row
/fo:table

请注意,这有一些缺陷(无法在没有为每行明确格式化的情况下写入表格的左侧,非常不优雅),但它可以作为Apache FOP中的解决方案。