我试图在图片之间插入文本test
,但是只要我添加文字,我就会在文本的顶部和底部找到间距。
正如我discovered earlier一样,为了摆脱那些破坏图像布局的顶部和底部间距,我需要将font-size设置为0:
但是如果要显示文本,字体大小为零是无用的。
<fo:block font-size="0" >
<fo:external-graphic src=" http://www.mycee.com/image/20135-Test-Mockup-V1.0-01_13.jpg"/>
</fo:block>
<fo:block background-color="pink" font-size="0pt" >
<fo:external-graphic src="http://www.mycee.com/image/20135-Test-Mockup-V1.0-01_14.jpg"/>
test
<fo:external-graphic src="http://www.mycee.com/image/20135-Test-Mockup-V1.0-01_16.jpg"/>
</fo:block>
<fo:block background-color="magenta" font-size="0" >
<fo:external-graphic src=" http://www.mycee.com/image/20135-Test-Mockup-V1.0-01_17.jpg"/>
</fo:block>
将文字放在fo-inline
内,我至少可以摆脱顶部填充,但是底部仍有填充,这会破坏我的布局。
<fo:inline font-size="10pt">
test
</fo:inline>
在图像之间插入文本的正确方法是什么,而文字不会导致填充显示在顶部或底部?
更新
终于搞定了
<fo:block background-color="pink" line-height="2.4mm" line-stacking-strategy="none" font-size="11pt">
<fo:table>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell text-align="left">
<fo:block>
<fo:external-graphic
src="http://www.mycee.com/images/20135-Test-Mockup-V1.0-01_14.jpg"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block>
12345678.90
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block>
<fo:external-graphic
src="http://www.mycee.com/images/20135-Test-Mockup-V1.0-01_16.jpg"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
如果你放大得足够,你最终会看到一条线,但出于打印的目的,这是完美的。
答案 0 :(得分:1)
你看到的“填充”可能是由于计算行高的方式。
线高由两种不同的FO属性控制:
line-height
设置起始值,即从块的文本内容派生的起始值;其默认值为normal
,FOP将其计算为1.2 * font-size
fo:block
包含除简单文字之外的内联元素(fo:inline
s,images,...),则line-stacking-strategy
控制如何修改起始值;它默认为max-height
,意思是(粗略地说)增加行高以适应图像和具有更大字体大小的内联现在,让我们看看你的具体情况:
font-size
默认为12pt,这意味着行高的初始值为1.2 * 12pt = 14.4pt;如果图像的高度小于该高度,它们将在顶部和底部显示一些空间font-size="0pt"
有点工作,因为初始行高将为0pt,随后会增加到图像的高度建议更改:
line-height="x" line-stacking-strategy="font-height"
元素中使用x
(其中fo:block
是图片的高度);这些属性的组合效果是将行高设置为确切的给定值(披露:我是FOP开发人员,但现在不是很活跃)