gpt4 book ai didi

java - 在 Apache FOP 中将文本覆盖在图像上

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:15 24 4
gpt4 key购买 nike

我正在尝试在外部图形上覆盖文本 block ,我可以做到这一点,但每当文本 block 在图像上渲染时我都会看到此错误:

org.apache.fop.layoutmgr.table.TableCellLayoutManager: getContentAreaBPD called on unknown BPD

我尝试设置表格单元格、 block 容器和 block 的高度,但没有任何帮助。

   <fo:table-cell display-align="center" height="229px">
<fo:block>
<fo:block-container z-index="1" top="0px" left="0px">
<fo:block height="229px" absolute-position="absolute">
<fo:external-graphic scaling="non-uniform" src=url("http://previews.123rf.com/images/nujalee/nujalee1108/nujalee110800004/10410227-Beautiful-green-leaf-isolated-on-white-Stock-Photo-leaf-texture.jpg") content-height="229px" content-width="110px"/>
</fo:block>
</fo:block-container>
<fo:block-container z-index="2" background-color="#538000" height="20px" width="77px" bottom="-229px" right="0px" absolute-position="absolute">
<fo:block color="#333333" font-size="10px" height="20px" font-family="Arial" display-align="center" text-align="center">
LEAF
</fo:block>
</fo:block-container>
</fo:block>
</fo:table-cell>

任何人都可以帮助我如何解决此错误并指导我做错了什么。我正在使用 ApacheFOP 2.1

最佳答案

XSL-Recommendation指出:

The area's position (and possibly size) is specified with the "left", "right", "top", and "bottom" properties. These properties specify offsets with respect to the area's nearest ancestor reference area.

Absolutely positioned areas are taken out of the normal flow. This means they have no impact on the layout of later siblings.

所以:

  • 无需将绝对定位的 fo:block-containerfo:block 元素放入其他对象中,它们可以是 fo:flow 的直接子元素
  • 我不明白你想通过第二个 fo:block-container 上的属性 bottom="-229px" 实现什么目的,但它的实际效果是将区域放置在主体区域下方,完全在页面之外;如果您希望对象重叠,请改用 top,其值小于其他容器的高度
  • 目前,z-index is not supported by FOP所以它也可以被删除;重叠的对象根据其在文档中的顺序进行堆叠,因此第一个对象位于以下对象的下方,最后一个对象出现在所有其他对象的上方

这是简化后的结果,经过FOP处理没有错误:

    <fo:flow flow-name="xsl-region-body">

<fo:block height="229px" absolute-position="absolute">
<fo:external-graphic scaling="non-uniform" src="url('http://previews.123rf.com/images/nujalee/nujalee1108/nujalee110800004/10410227-Beautiful-green-leaf-isolated-on-white-Stock-Photo-leaf-texture.jpg')" content-height="229px" content-width="110px"/>
</fo:block>
<fo:block-container background-color="#538000" height="20px" width="77px" absolute-position="absolute" top="30px">
<fo:block color="#333333" font-size="10px" height="20px" font-family="Arial" display-align="center" text-align="center">
LEAF
</fo:block>
</fo:block-container>

</fo:flow>

(最后一点,错误本身可能是由于错误造成的)

披露:我是一名 FOP 开发人员,尽管现在不太活跃。

关于java - 在 Apache FOP 中将文本覆盖在图像上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154482/

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