我有这个问题: 我需要一个FO表,它与内容(单元格)的宽度一样宽。 但是当我在我的FO标记中添加一个表时,它总是像块级元素一样使用并且使用wohle行的宽度。
让我感到困惑:如果我将它包装成Inline-Element(具有预期的行为),则Table不具有Inline-Element的行为,而是再次成为Block-Element。
有人知道如何解决这个问题吗?
这是我的标记:
<inline width="auto">
<table table-layout="fixed">
<table-column column-width="6.36mm"/>
<table-column/>
<table-column column-width="6.36mm"/>
<table-column/>
<table-column column-width="6.36mm"/>
<table-column/>
<table-column column-width="6.36mm"/>
<table-column/>
<table-body>
<table-row>
<table-cell padding-right="1.6mm">
<block-container height="3mm" width="4.76mm" overflow="hidden">
<block>
<external-graphic content-height="3mm" src="image1.jpg"/>
</block>
</block-container>
</table-cell>
<table-cell>
<block>
Image name 1
</block>
</table-cell>
<table-cell padding-right="1.6mm">
<block-container height="3mm" width="4.76mm" overflow="hidden">
<block>
<external-graphic content-height="3mm" src="image2.jpg"/>
</block>
</block-container>
</table-cell>
<table-cell>
<block>
Image name 2
</block>
</table-cell>
<table-cell padding-right="1.6mm">
<block-container height="3mm" width="4.76mm" overflow="hidden">
<block>
<external-graphic content-height="3mm" src="image3.jpg"/>
</block>
</block-container>
</table-cell>
<table-cell>
<block>
Image name 3
</block>
</table-cell>
<table-cell padding-right="1.6mm">
<block-container height="3mm" width="4.76mm" overflow="hidden">
<block>
<external-graphic content-height="3mm" src="image4.jpg"/>
</block>
</block-container>
</table-cell>
<table-cell>
<block>
image name4
</block>
</table-cell>
</table-row>
</table-body>
</table>
</inline>
(也许重要提示:我的专栏需要切换固定和自动宽度)
谢谢你!!!
答案 0 :(得分:7)
您需要的是automatic table layout,理论上 设置inline-progression-dimension
和table-layout
到auto
:
<fo:table inline-progression-dimension="auto" table-layout="auto">
... columns, table-body ...
</fo:table>
然而,FOP does not support auto layout yet;如果您没有为表格设置宽度,则将使用整个线宽,并根据其column-width
(固定或百分比)或相等部分在列之间进行划分列没有明确设置的宽度。
让我感到困惑:如果我把它包装成一个内联元素(它有 预期的行为),表没有的行为 内联元素但又变成了一个块元素。
fo:table
始终会创建阻止区域,并将其包装在fo:inline
内并不会改变它。
编辑:解决方法
在单行对象的特定情况下(如问题所示)可能根本不需要表格,并且可以使用所需的输出来实现只是内联对象:
<inline keep-together.within-line="always">
<external-graphic height="3mm" width="4.76mm" overflow="hidden"
content-height="3mm" src="image1.jpg"/>
Image name 1
<external-graphic height="3mm" width="4.76mm" overflow="hidden"
content-height="3mm" src="image2.jpg"/>
Image name 2
<external-graphic height="3mm" width="4.76mm" overflow="hidden"
content-height="3mm" src="image3.jpg"/>
Image name 3
<external-graphic height="3mm" width="4.76mm" overflow="hidden"
content-height="3mm" src="image4.jpg"/>
Image name 4
</inline>