【问题标题】:External-graphic has space above even though I've set it to zero外部图形上方有空间,即使我已将其设置为零
【发布时间】:2018-03-01 11:04:58
【问题描述】:

我的 XSL-FO 模板在每个页面的页脚都有一个图像:

<fo:block-container left="0mm" top="10mm" absolute-position="absolute" width="210mm" height="10mm" border="0.1pt black solid" margin="0mm" padding="0mm" space-before="0mm">
    <fo:block border="0.1pt green solid" margin="0mm" padding="0mm" space-before="0mm">
        <fo:external-graphic src="grayblock.pdf"  height="10mm" content-height="scale-to-fit" border="0.1pt blue solid" margin="0mm" padding="0mm" space-before="0mm"/>
    </fo:block>
</fo:block-container>

我希望图像的顶部与块容器的顶部对齐。但这是我得到的结果:

我的图像(蓝色/灰色矩形)开始于块容器顶部下方约 0.5 毫米处(黑线和蓝色/灰色矩形之间的距离)。

我尝试过的:

  • 我插入了margin="0mm" padding="0mm" space-before="0mm" 以确保块容器、块和外部图形不会从祖先那里继承任何边距、填充等。这并没有改变结果。
  • 添加负边距/填充不会向上移动外部图形。
  • 将边框设置为“无”并不能解决问题。我添加了边框以直观地显示导致问题的元素。

通常,这 0.5 毫米的间隙无关紧要。在这种情况下,我试图对齐两个块容器及其内容,不同之处在于很难让它们准确对齐。

如何消除外部图形上方的这个间隙?

(我使用的是 Antenna House XSL Formatter 6.1)

【问题讨论】:

  • FOP 似乎产生了类似的差距,这表明问题是一般的 FO 问题,而不是特定格式化程序的怪癖。

标签: xml xsl-fo


【解决方案1】:

我认为差距有两个罪魁祸首:

  • 三个边界(在fo:block-containerfo:blockfo:external-graphic),侵蚀了可用高度
  • half-leading trait

移除边框并将块 line-height 设置为正好 10 毫米应该避免间隙(我用 FOP 2.2 测试过):

<fo:block-container left="0mm" top="30mm" absolute-position="absolute" width="210mm" height="10mm" margin="0mm" padding="0mm" space-before="0mm" background-color="#AAFFFF">
    <fo:block line-height="10mm" line-stacking-strategy="font-height" margin="0mm" padding="0mm" space-before="0mm" background-color="#FFFFAA">
        <fo:external-graphic vertical-align="top" src="grayblock.pdf" height="10mm" content-height="scale-to-fit" margin="0mm" padding="0mm" space-before="0mm"/>
    </fo:block>
</fo:block-container>

【讨论】:

  • 就是这样!不过,我必须在 fo:block 上设置 'font-size="10mm"' 才能让它工作。
  • 感谢 font-size="0mm" 删除了 fo:block 中的任何多余空格
猜你喜欢
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多