我正在尝试在外部图形上覆盖一个文本块,我能够做到这一点,但只要在图像上呈现文本块,我就会看到此错误:
org.apache.fop.layoutmgr.table.TableCellLayoutManager:在未知BPD上调用getContentAreaBPD
我尝试为table-cell,block-container和blocks设置高度,但没有任何帮助。
<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
答案 0 :(得分:0)
区域的位置(以及可能的大小)使用“left”,“right”,“top”和“bottom”属性指定。 这些属性指定相对于区域最近的祖先参考区域的偏移量。
绝对定位区域从正常流量中取出。这意味着它们对后来的兄弟姐妹的布局没有影响。
所以:
fo:block-container
和fo:block
元素放在其他对象中,它们可以是fo:flow
bottom="-229px"
上使用属性fo:block-container
实现什么,但它的实际效果是将区域放在身体区域的下方,完全在页面之外;如果您希望对象重叠,请改用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开发人员,但现在不是很活跃。