首页 > 解决方案 > 调整块容器内块的垂直位置

问题描述

我正在尝试编写一个带有绝对定位元素的小型 XSL-FO 文件。其中之一是角落里的标签。我已经设法让它非常接近但不是我想要的。这里是:

带有红色方块的页角和

我想将文本垂直和水平居中。水平位置还可以,但垂直位置可能根据字体指标居中,但在视觉上它稍微靠上,所以我想将它向下移动几个点。但是我该怎么做呢?这是 XSL-FO 文件:

<root xmlns="http://www.w3.org/1999/XSL/Format">
  <layout-master-set>
    <simple-page-master master-name="master">
      <region-body margin="0"/>
    </simple-page-master>
  </layout-master-set>

  <page-sequence master-reference="master">
    <flow flow-name="xsl-region-body">
      <block-container absolute-position="absolute" left="0" top="0" 
          width="42pt" height="42pt" background-color="#ed4a46" 
          display-align="center">
        <block font-family="Iosevka" font-size="24" color="white" 
            text-align="center">K3</block>
      </block-container>
    </flow>
  </page-sequence>
</root>

我尝试使用baseline-shift, alignment-adjust,space-before等,但它们似乎都没有对标签产生任何影响。

FO 处理器是 Apache FOP,以防万一。

标签: xsl-foapache-fop

解决方案


如何使用@padding-before调整垂直尺寸间距?这是示例 FO 以及 FOP 2.6 和 AH Formatter V7.1 GUI 中的结果。

<root xmlns="http://www.w3.org/1999/XSL/Format">
  <layout-master-set>
    <simple-page-master master-name="master">
      <region-body margin="0"/>
    </simple-page-master>
  </layout-master-set>

  <page-sequence master-reference="master">
    <flow flow-name="xsl-region-body">
      <block-container absolute-position="absolute" left="0" top="0" 
          width="42pt" height="42pt" background-color="#ed4a46" 
          display-align="center">
        <block font-family="Iosevka" font-size="24pt" color="white" 
            text-align="center" padding-before="2pt">K3</block>
      </block-container>
    </flow>
  </page-sequence>
</root>

格式化结果


推荐阅读