gpt4 book ai didi

java - Apache FOP2 中图像之间的内联文本

转载 作者:行者123 更新时间:2023-12-01 10:51:06 25 4
gpt4 key购买 nike

我正在尝试在图像之间内联文本test,但是一旦添加文本,文本的顶部和底部就会出现间距。

enter image description here

由于我已经 discovered earlier ,为了消除那些破坏图像布局的顶部和底部间距,我需要将字体大小设置为 0:

enter image description here

但是如果你想显示文本,字体大小为零是毫无用处的。

            <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>

enter image description here

在图像之间插入文本而不导致文本导致顶部或底部出现填充的正确方法是什么?

更新

终于可以使用了

<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>

enter image description here

如果放大得足够大,您最终会看到一条线,但出于打印目的,这是完美的。

最佳答案

您看到的“填充”可能是由于行高的计算方式造成的。

行高由两个不同的 FO 属性控制:

  • line-height 设置起始值,该值源自 block 的文本内容;它的默认值为 normal ,FOP 将其计算为 1.2 * font-size
  • line-stacking-strategy 控制如何修改起始值,如果 fo:block除了简单文本之外,还包含内联元素(fo:inline s、图像……);默认为 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 开发人员,尽管现在不太活跃)

关于java - Apache FOP2 中图像之间的内联文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33898388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com