fo:list-block底部对齐与标签长度限制技术问题咨询
解决MIL-STD-40051 XML(DTD 6.5.3)中fo:list-block的两个布局问题
问题1:换行后list-item-body与list-item-label底部对齐
给list-item-label内部嵌套fo:block-container,通过垂直对齐属性让标签内容靠底部排列,确保list-item-body内容与标签底部对齐:
<fo:list-block provisional-distance-between-starts="2cm" provisional-label-separation="0.5cm"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block-container display-align="after" height="100%"> <fo:block>这是一段会自动换行的长标签文本,测试多行场景下的底部对齐效果</fo:block> </fo:block-container> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>WP 0021</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>
核心逻辑:display-align="after"让容器内的文本块靠底部对齐,height="100%"确保容器占满list-item的整体高度,从而实现body内容与标签底部的对齐效果。
问题2:限制list-item-label长度并保留换行后的引导线
基于问题1的解决方案,给fo:list-item-label添加固定宽度,同时给标签文本块设置底部边框或引导线:
方案1:边框实现贯穿式引导线
<fo:list-block provisional-distance-between-starts="2cm" provisional-label-separation="0.5cm"> <fo:list-item> <fo:list-item-label end-indent="label-end()" width="3cm"> <fo:block-container display-align="after" height="100%"> <fo:block border-bottom="1px solid black" padding-bottom="2px"> 这是一段会自动换行的长标签文本,测试固定宽度下的引导线效果 </fo:block> </fo:block-container> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>WP 0021</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>
方案2:引导线填充文本到标签末尾
如果需要仅在文本后添加引导线至标签宽度边界,可在文本块后追加fo:leader:
<fo:list-block provisional-distance-between-starts="2cm" provisional-label-separation="0.5cm"> <fo:list-item> <fo:list-item-label end-indent="label-end()" width="3cm"> <fo:block-container display-align="after" height="100%"> <fo:block> 这是一段会自动换行的长标签文本,测试固定宽度下的引导线效果 <fo:leader leader-pattern="rule" leader-length="100%"/> </fo:block> </fo:block-container> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>WP 0021</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>
核心逻辑:width="3cm"固定标签宽度,确保文本超出后自动换行;边框或引导线属性保证换行后仍有完整的引导效果,同时依赖问题1的布局实现底部对齐。
内容的提问来源于stack exchange,提问作者Bobkitty
相关产品推荐
相关产品推荐

