我想要理解这一点我不知所措。我是新手使用xsl-fo(apache-fop实现),我想要一个带边框的块,里面的内容被填充,所以它不会碰到边框。 但是,当我添加填充时,填充也应用于下一个块?
<fo:page-sequence master-reference="report-page">
<fo:flow flow-name="xsl-region-body">
<fo:block border="1px solid black" font-size="8pt" margin-bottom="3mm" padding="3mm" >
<fo:block font-weight="bold">FOO</fo:block>
<fo:block>ANOTHER BLOCK</fo:block>
</fo:block>
<fo:block font-size="8pt">BAR</fo:block>
</fo:flow>
为什么BAR会被前一个块的填充量缩进?如果我删除第一个块上的填充,那么事情排好了吗?
答案 0 :(得分:3)
你应该做的是将边距设置为“0mm”并在块上填充“3mm”,如果你的意图是在外面边界没有空间,并且文本和文本之间有3mm的空间。边界。
<fo:block border="1px solid black" font-size="8pt" margin="0mm" padding="3mm">
<fo:block font-weight="bold">FOO</fo:block>
</fo:block>
如果margin-bottom旨在在元素之间留出空间,那么你可以在后面的元素上使用space-after或space-before。
答案 1 :(得分:1)
尝试执行以下操作(未经测试,因为我的Apache FOP安装无法实现......)
编辑:现已通过测试。填充仅适用于第一个块(“FOO”)。
在fo:inline元素中指定填充,如下所示:
<fo:block border="1px solid black" margin-bottom="3mm">
<fo:inline padding="3mm" font-size="8pt" font-weight="bold">
<fo:block>FOO</fo:block>
</fo:inline>
</fo:block>
此外,我已将font-weight和font-size属性移动到内联元素,因为内部块是他们需要的唯一位置(至少在您的简单片段中)。外部块仅定义边框。如果有效,请告诉我。